@@ -65,8 +65,8 @@ class AccountMap(CidBase):
6565 }
6666 }
6767
68- def __init__ (self , session : Session , athena : Athena , cur = None ) -> None :
69- self .cur = cur # Only for trends and dummy
68+ def __init__ (self , session : Session , athena : Athena , get_cur = None ) -> None :
69+ self .get_cur = get_cur # get_cur callback Only for trends and dummy
7070 self .athena = athena
7171 super ().__init__ (session )
7272
@@ -121,7 +121,7 @@ def create_sql_from_metadata(self, name, metadata_table):
121121 template = Template (
122122 resource_string (
123123 view_definition .get ('providedBy' ),
124- f'data/queries/ { view_file } '
124+ f'data/{ view_file } '
125125 ).decode ('utf-8' )
126126 )
127127 elif view_definition .get ('data' ):
@@ -133,8 +133,8 @@ def create_sql_from_metadata(self, name, metadata_table):
133133 vars = {
134134 'metadata_table_name' : metadata_table ['Name' ],
135135 'metadata_database_name' : metadata_table ['Database' ],
136- 'cur_database' : self .cur .database , # only for trends in metadata
137- 'cur_table_name' : self .cur .table_name , # only for trends in metadata
136+ 'cur_database' : self .get_cur () .database if name == 'aws_accounts' and self . get_cur else None , # only for trends in metadata
137+ 'cur_table_name' : self .get_cur () .table_name if name == 'aws_accounts' and self . get_cur else None , # only for trends in metadata
138138 }
139139 for key , val in self .mappings .get (name ).get (metadata_table ['Name' ]).items ():
140140 logger .debug (f'Mapping field { key } to { val } ' )
@@ -151,7 +151,8 @@ def create_or_update(self, name) -> bool:
151151 def get_dummy_account_mapping_sql (self , name ) -> list :
152152 """Create dummy account mapping"""
153153 logger .info (f'Creating dummy account mapping for { name } ' )
154- if self .cur .version .startswith ('2' ):
154+ cur = self .get_cur ()
155+ if cur .version .startswith ('2' ):
155156 sql_file = 'data/queries/shared/account_map_cur2.sql'
156157 else :
157158 sql_file = 'data/queries/shared/account_map_dummy.sql'
@@ -161,8 +162,8 @@ def get_dummy_account_mapping_sql(self, name) -> list:
161162 ).decode ('utf-8' ))
162163 columns_tpl = {
163164 'athena_view_name' : name ,
164- 'cur_table_name' : self . cur .table_name ,
165- 'cur_database' : self . cur .database ,
165+ 'cur_table_name' : cur .table_name ,
166+ 'cur_database' : cur .database ,
166167 }
167168 compiled_query = template .safe_substitute (columns_tpl )
168169 return compiled_query
@@ -278,20 +279,23 @@ def create_account_mapping_sql(self, name) -> str:
278279 except CidError as exc :
279280 logger .debug (exc )
280281
281- if self .cur .version .startswith ('2' ):
282+ if self .get_cur and self . get_cur () .version .startswith ('2' ):
282283 cid_print ('Looks like CUR2 is used. Will use it for account map.' )
283284 set_parameters ({'account-map-source' : 'dummy' })
284285
285286 for attempt in range (3 ):
286287 try :
288+ choices = {
289+ 'AWS Organizations (one time account listing)' : 'organization' ,
290+ 'CSV file (relative path required)' : 'csv' ,
291+ }
292+ if self .get_cur :
293+ choices ['Dummy (CUR account data, no names for CUR1)' ] = 'dummy'
294+
287295 metadata_source = get_parameter (
288296 param_name = 'account-map-source' ,
289297 message = "Please select account metadata collection method" ,
290- choices = {
291- 'Dummy (CUR account data, no names for CUR1)' : 'dummy' ,
292- 'AWS Organizations (one time account listing)' : 'organization' ,
293- 'CSV file (relative path required)' : 'csv' ,
294- },
298+ choices = choices ,
295299 )
296300 logger .info (f'Attempt { attempt + 2 } ' )
297301 # Collect account list from different sources of user choice
0 commit comments