blob: ed7f6f6cf8d276507a31e904598025c9e46dbcc3 [file] [log] [blame]
/*
*
* * Copyright (c) 2018, EPAM SYSTEMS INC
* *
* * Licensed under the Apache License, Version 2.0 (the "License");
* * you may not use this file except in compliance with the License.
* * You may obtain a copy of the License at
* *
* * http://www.apache.org/licenses/LICENSE-2.0
* *
* * Unless required by applicable law or agreed to in writing, software
* * distributed under the License is distributed on an "AS IS" BASIS,
* * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* * See the License for the specific language governing permissions and
* * limitations under the License.
*
*/
package com.epam.dlab.backendapi.dao.gcp;
import com.epam.dlab.backendapi.dao.BaseBillingDAO;
import com.epam.dlab.backendapi.resources.dto.gcp.GcpBillingFilter;
import com.epam.dlab.util.UsernameUtils;
import org.bson.Document;
import org.bson.conversions.Bson;
import java.util.Collections;
import java.util.List;
import static com.epam.dlab.MongoKeyWords.USAGE_FROM;
import static com.epam.dlab.MongoKeyWords.USAGE_TO;
import static com.epam.dlab.backendapi.dao.aws.AwsBillingDAO.DLAB_RESOURCE_TYPE;
import static com.epam.dlab.model.aws.ReportLine.*;
import static com.mongodb.client.model.Accumulators.*;
import static com.mongodb.client.model.Aggregates.group;
import static com.mongodb.client.model.Aggregates.sort;
public class GcpBillingDao extends BaseBillingDAO<GcpBillingFilter> {
@Override
protected Bson sortCriteria() {
return sort(new Document(ID + "." + USER, 1)
.append(ID + "." + FIELD_DLAB_ID, 1)
.append(ID + "." + FIELD_PRODUCT, 1));
}
@Override
protected Bson groupCriteria() {
return group(getGroupingFields(USER, FIELD_DLAB_ID, DLAB_RESOURCE_TYPE, FIELD_PRODUCT,
currencyCodeFieldName()),
sum(FIELD_COST, "$" + FIELD_COST),
min(USAGE_FROM, "$" + FIELD_USAGE_DATE),
max(USAGE_TO, "$" + FIELD_USAGE_DATE)
);
}
@Override
public Double getTotalCost() {
return null;
}
@Override
public Double getUserCost(String user) {
return null;
}
@Override
public int getBillingQuoteUsed() {
return 0;
}
@Override
public int getBillingUserQuoteUsed(String user) {
return 0;
}
@Override
public boolean isBillingQuoteReached() {
return false;
}
@Override
public boolean isUserQuoteReached(String user) {
return false;
}
@Override
protected List<Bson> cloudMatchCriteria(GcpBillingFilter filter) {
return Collections.emptyList();
}
@Override
protected String getEdgeSize() {
return getSsnShape();
}
public String edgeId(Document d) {
return String.join("-", settings.getServiceBaseName(), UsernameUtils.removeDomain(d.getString(ID)), "edge");
}
@Override
protected String getSsnShape() {
return "t2.medium";
}
}