18
18
)
19
19
from spaceone .cost_analysis .manager .cost_manager import CostManager
20
20
from spaceone .cost_analysis .manager .cost_report_manager import CostReportManager
21
+ from spaceone .cost_analysis .manager .cost_report_data_manager import (
22
+ CostReportDataManager ,
23
+ )
21
24
from spaceone .cost_analysis .manager .currency_manager import CurrencyManager
22
25
from spaceone .cost_analysis .manager .data_source_manager import DataSourceManager
23
26
from spaceone .cost_analysis .manager .email_manager import EmailManager
@@ -41,6 +44,7 @@ def __init__(self, *args, **kwargs):
41
44
self .cost_mgr = CostManager ()
42
45
self .cost_report_config_mgr = CostReportConfigManager ()
43
46
self .cost_report_mgr = CostReportManager ()
47
+ self .cost_report_data_mgr = CostReportDataManager ()
44
48
self .currency_map : Union [dict , None ] = None
45
49
self .currency_date : Union [str , None ] = None
46
50
@@ -247,10 +251,13 @@ def _aggregate_monthly_cost_report(
247
251
) -> None :
248
252
report_year = report_month .split ("-" )[0 ]
249
253
250
- # delete old cost_reports
254
+ # delete old cost_reports and cost_reports_data
251
255
self ._delete_old_cost_reports (
252
256
report_month , domain_id , cost_report_config_id , status
253
257
)
258
+ self ._delete_old_is_confirmed_cost_report_data (
259
+ domain_id , cost_report_config_id , report_month , status
260
+ )
254
261
255
262
# collect enabled data sources
256
263
query = {
@@ -353,6 +360,25 @@ def _delete_old_cost_reports(
353
360
)
354
361
cost_reports_vos .delete ()
355
362
363
+ def _delete_old_is_confirmed_cost_report_data (
364
+ self ,
365
+ domain_id : str ,
366
+ cost_report_config_id ,
367
+ report_month : str ,
368
+ status : str ,
369
+ ):
370
+ if status == "SUCCESS" :
371
+ cost_report_data_vos = self .cost_report_data_mgr .filter_cost_reports_data (
372
+ domain_id = domain_id ,
373
+ cost_report_config_id = cost_report_config_id ,
374
+ report_month = report_month ,
375
+ is_confirmed = True ,
376
+ )
377
+ _LOGGER .debug (
378
+ f"[delete_cost_report_data] delete is_confirmed cost report data ({ cost_report_config_id , report_month } ) { cost_report_data_vos .count ()} "
379
+ )
380
+ cost_report_data_vos .delete ()
381
+
356
382
def send_cost_report (self , cost_report_vo : CostReport ) -> None :
357
383
domain_id = cost_report_vo .domain_id
358
384
workspace_id = cost_report_vo .workspace_id
0 commit comments