1414
1515
1616async def create_service (action , redis , stack_instance , to_be_deleted ,
17- force_delete , service_name , service ):
17+ force_delete , service_name , service , index ):
1818 opa_broker_factory = OPABrokerFactory ()
1919 opa_broker = opa_broker_factory .get_opa_broker ()
2020 success = True
@@ -43,6 +43,10 @@ async def create_service(action, redis, stack_instance, to_be_deleted,
4343 if action == "delete" :
4444 functional_requirements = reversed (functional_requirements )
4545 for fr in functional_requirements :
46+ stack_instance = document_manager .get_stack_instance (stack_instance .name )
47+ service = stack_instance .services [service_name ][index ]
48+ logger .debug (
49+ f"Debug for service'{ service } '" )
4650 fr_doc = document_manager .get_functional_requirement (fr )
4751 fr_jobs = []
4852 infrastructure_target = service .infrastructure_target
@@ -79,6 +83,13 @@ async def create_service(action, redis, stack_instance, to_be_deleted,
7983 cloud_provider ].playbook_path
8084 if fr_doc .invocation [cloud_provider ].serial :
8185 invoc ['serial' ] = fr_doc .invocation [cloud_provider ].serial
86+ if fr_doc .invocation [cloud_provider ].ansible_role :
87+ invoc ['ansible_role' ] = fr_doc .invocation [cloud_provider ].ansible_role
88+ if fr_doc .invocation [cloud_provider ].connection :
89+ invoc ['connection' ] = fr_doc .invocation [cloud_provider ].connection
90+ if fr_doc .invocation [cloud_provider ].wait_for_port :
91+ invoc ['wait_for_port' ] = fr_doc .invocation [cloud_provider ].wait_for_port
92+ invoc ['gather_facts' ] = fr_doc .invocation [cloud_provider ].gather_facts
8293 invoc ['service' ] = service_name
8394 invoc ["hosts" ] = service .hosts
8495 logger .debug ("Appending job" )
@@ -135,15 +146,14 @@ async def create_job_per_service(services,
135146 force_delete = False ):
136147 success = True
137148 stage_jobs = []
138- document_mananger = get_document_manager ()
139149 # do stages
140150 if stack_instance .stages :
141151 for stage in stack_instance .stages :
142152 for service_name in stage .services :
143- for service in stack_instance .services [service_name ]:
153+ for idx , service in enumerate ( stack_instance .services [service_name ]) :
144154 success = create_service (action , redis , stack_instance ,
145155 to_be_deleted , force_delete ,
146- service_name , service )
156+ service_name , service , idx )
147157 stage_jobs .append (asyncio .create_task (success ))
148158
149159 await asyncio .gather (* stage_jobs )
@@ -152,10 +162,10 @@ async def create_job_per_service(services,
152162 # not using stages
153163 else :
154164 for service_name , service_list in services .items ():
155- for service in service_list :
165+ for idx , service in enumerate ( service_list ) :
156166 success = await create_service (action , redis , stack_instance ,
157167 to_be_deleted , force_delete ,
158- service_name , service )
168+ service_name , service , idx )
159169
160170 return success
161171
0 commit comments