99
1010_LOGGER = logging .getLogger (__name__ )
1111
12- _REQUIRED_FIELDS = [
13- "cost" ,
14- "currency" ,
15- "year" ,
16- "month" ,
17- ]
12+ _REQUIRED_FIELDS = ["cost" , "currency" , "billed_date" ]
1813
1914
2015class CostManager (BaseManager ):
2116 def __init__ (self , * args , ** kwargs ):
2217 super ().__init__ (* args , ** kwargs )
23- self .http_file_connector : HTTPFileConnector = self .locator .get_connector (
24- HTTPFileConnector
25- )
18+ self .default_vars = None
19+ self .field_mapper = None
2620
2721 def get_data (self , options , secret_data , schema , task_options ):
28- self .http_file_connector .create_session (options , secret_data , schema )
2922 self ._check_task_options (task_options )
3023
31- base_url = task_options ["base_url" ]
24+ if "default_vars" in options :
25+ self .default_vars = options ["default_vars" ]
26+
27+ if "field_mapper" in options :
28+ self .field_mapper = options ["field_mapper" ]
29+
3230 if not secret_data :
33- response_stream = self .http_file_connector .get_cost_data (base_url )
31+ base_url = task_options ["base_url" ]
32+ http_file_connector = self .locator .get_connector (HTTPFileConnector )
33+ http_file_connector .create_session (options , secret_data , schema )
34+ response_stream = http_file_connector .get_cost_data (base_url )
3435 else :
3536 # just for Google Cloud Storage
37+ bucket_name = task_options ["bucket_name" ]
3638 storage_connector = self .locator .get_connector (
3739 GoogleStorageConnector , secret_data = secret_data
3840 )
39- response_stream = storage_connector .get_cost_data (base_url )
41+ response_stream = storage_connector .get_cost_data (bucket_name )
42+
4043 for results in response_stream :
4144 yield self ._make_cost_data (results )
4245
@@ -46,10 +49,10 @@ def _make_cost_data(self, results):
4649 result = self ._apply_strip_to_dict_keys (result )
4750 result = self ._apply_strip_to_dict_values (result )
4851
49- if self .http_file_connector . field_mapper :
52+ if self .default_vars :
5053 result = self ._change_result_by_field_mapper (result )
5154
52- if self .http_file_connector . default_vars :
55+ if self .field_mapper :
5356 self ._set_default_vars (result )
5457
5558 self ._create_billed_date (result )
@@ -86,8 +89,8 @@ def _make_cost_data(self, results):
8689
8790 @staticmethod
8891 def _check_task_options (task_options ):
89- if "base_url" not in task_options :
90- raise ERROR_REQUIRED_PARAMETER (key = "task_options.base_url " )
92+ if "base_url" not in task_options or "bucket_name" not in task_options :
93+ raise ERROR_REQUIRED_PARAMETER (key = "task_options" )
9194
9295 @staticmethod
9396 def _apply_strip_to_dict_keys (result ):
@@ -106,7 +109,7 @@ def _apply_strip_to_dict_values(result):
106109 return result
107110
108111 def _change_result_by_field_mapper (self , result ):
109- for origin_field , actual_field in self .http_file_connector . field_mapper .items ():
112+ for origin_field , actual_field in self .field_mapper .items ():
110113 if isinstance (actual_field , str ):
111114 if actual_field in result :
112115 result [origin_field ] = result [actual_field ]
@@ -124,7 +127,7 @@ def _change_result_by_field_mapper(self, result):
124127 del result [actual_additional_field ]
125128 result [origin_field ] = additional_info
126129
127- return result
130+ return result
128131
129132 def _create_billed_date (self , result ):
130133 if self ._exist_billed_date (result ):
@@ -170,7 +173,7 @@ def _apply_parse_date(date):
170173 raise e
171174
172175 def _set_default_vars (self , result ):
173- for key , value in self .http_file_connector . default_vars .items ():
176+ for key , value in self .default_vars .items ():
174177 result [key ] = value
175178
176179 @staticmethod
0 commit comments