Skip to content

Commit

Permalink
feat: add cost_report_data apis
Browse files Browse the repository at this point in the history
  • Loading branch information
ImMin5 committed Jan 25, 2024
1 parent e2c8913 commit eecbd35
Show file tree
Hide file tree
Showing 8 changed files with 350 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -67,18 +67,31 @@ def _create_cost_report_run_task(self):
"stages": [
{
"locator": "SERVICE",
"name": "CostReportConfigService",
"name": "CostReportService",
"metadata": {"token": self._token},
"method": "create_cost_report_by_cost_report_config",
"params": {"params": {}},
}
},
{
"locator": "SERVICE",
"name": "CostReportDataService",
"metadata": {"token": self._token},
"method": "create_cost_report_data_by_cost_report_config",
"params": {"params": {}},
},
],
}
print(
f"{utils.datetime_to_iso8601(datetime.utcnow())} [INFO] [create_task] create_cost_report_by_cost_report_config => START"
)
print(
f"{utils.datetime_to_iso8601(datetime.utcnow())} [INFO] [create_task] create_cost_report_data_by_cost_report_config => START"
)
return [stp]
else:
print(
f"{utils.datetime_to_iso8601(datetime.utcnow())} [INFO] [create_task] create_cost_report_by_cost_report_config => SKIP"
)
print(
f"{utils.datetime_to_iso8601(datetime.utcnow())} [INFO] [create_task] create_cost_report_data_by_cost_report_config => SKIP"
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,14 @@ def filter_data_sources(self, **conditions):
def list_cost_reports_data(self, query: dict) -> Tuple[QuerySet, int]:
return self.cost_report_data_model.query(**query)

def analyze_cost_reports_data(self, query: dict) -> dict:
def analyze_cost_reports_data(
self, query: dict, target="SECONDARY_PREFERRED"
) -> dict:
query["target"] = target
query["date_field"] = "report_month"
query["date_field_format"] = "%Y-%m"
_LOGGER.debug(f"[analyze_cost_reports_data] query: {query}")

return self.cost_report_data_model.analyze(**query)

def stat_cost_reports_data(self, query) -> dict:
Expand Down
12 changes: 7 additions & 5 deletions src/spaceone/cost_analysis/model/cost_report_data/database.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,20 @@ class CostReportData(MongoModel):
max_length=40, default=None, null=True
) # todo workspace_id required
domain_id = StringField(max_length=40)
created_at = DateTimeField(auto_now_add=True)

meta = {
"updatable_fields": [
"created_at",
],
"updatable_fields": [],
"minimal_fields": [
"cost_report_config_id",
"cost_report_data_id",
"data_source_id",
"workspace_id",
],
"ordering": ["is_confirmed"],
"indexes": ["domain_id", "cost_report_data_id", "data_source_id"],
"indexes": [
"domain_id",
"-report_year",
"cost_report_data_id",
"data_source_id",
],
}
3 changes: 2 additions & 1 deletion src/spaceone/cost_analysis/model/cost_report_data/request.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,13 @@ class CostReportDataSearchQueryRequest(BaseModel):

class CostReportDataAnalyzeQueryRequest(BaseModel):
query: Union[dict, None] = None
cost_report_data_id: str
cost_report_data_id: Union[str, None] = None
report_year: Union[str, None] = None
report_month: Union[str, None] = None
product: Union[str, None] = None
provider: Union[str, None] = None
data_source_id: Union[str, None] = None
cost_report_config_id: Union[str, None] = None
workspace_id: Union[str, None] = None
domain_id: str

Expand Down
6 changes: 0 additions & 6 deletions src/spaceone/cost_analysis/model/cost_report_data/response.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,6 @@ class CostReportDataResponse(BaseModel):
project_id: Union[str, None] = None
workspace_id: Union[str, None] = None
domain_id: Union[str, None] = None
created_at: Union[datetime, None] = None

def dict(self, *args, **kwargs):
data = super().dict(*args, **kwargs)
data["created_at"] = utils.datetime_to_iso8601(data["created_at"])
return data


class CostReportsDataResponse(BaseModel):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
CostReportConfigManager,
)
from spaceone.cost_analysis.service.cost_report_serivce import CostReportService
from spaceone.cost_analysis.service.cost_report_data_service import (
CostReportDataService,
)
from spaceone.cost_analysis.model.cost_report_config.request import *
from spaceone.cost_analysis.model.cost_report_config.response import *

Expand Down Expand Up @@ -202,6 +205,9 @@ def run(self, params: CostReportConfigRunRequest) -> None:
cost_report_service = CostReportService()
cost_report_service.create_cost_report(cost_report_config_vo)

cost_report_data_service = CostReportDataService()
cost_report_data_service.create_cost_report_data(cost_report_config_vo)

@transaction(
permission="cost-analysis:CostReportConfig.read",
role_types=["DOMAIN_ADMIN", "WORKSPACE_OWNER"],
Expand Down
Loading

0 comments on commit eecbd35

Please sign in to comment.