@@ -214,6 +214,14 @@ def pytest_addoption(parser):
214
214
"--proxy-stack" ,
215
215
help = "Name of CFN stack providing a Proxy environment." ,
216
216
)
217
+ parser .addoption (
218
+ "--build-image-roles-stack" ,
219
+ help = "Name of CFN stack providing the build image permissions." ,
220
+ )
221
+ parser .addoption (
222
+ "--api-stack" ,
223
+ help = "Name of CFN stack providing the ParallelCluster API infrastructure." ,
224
+ )
217
225
218
226
219
227
def pytest_generate_tests (metafunc ):
@@ -420,38 +428,44 @@ def api_server_factory(
420
428
api_servers = {}
421
429
422
430
def _api_server_factory (server_region ):
423
- api_stack_name = generate_stack_name ("integ-tests-api" , request .config .getoption ("stackname_suffix" ))
424
-
425
- params = [
426
- {"ParameterKey" : "EnableIamAdminAccess" , "ParameterValue" : "true" },
427
- {"ParameterKey" : "CreateApiUserRole" , "ParameterValue" : "false" },
428
- ]
429
- if api_definition_s3_uri :
430
- params .append ({"ParameterKey" : "ApiDefinitionS3Uri" , "ParameterValue" : api_definition_s3_uri })
431
- if policies_uri :
432
- params .append ({"ParameterKey" : "PoliciesTemplateUri" , "ParameterValue" : policies_uri })
433
- if resource_bucket :
434
- params .append ({"ParameterKey" : "CustomBucket" , "ParameterValue" : resource_bucket })
435
-
436
- template = (
437
- api_infrastructure_s3_uri
438
- or f"https://{ resource_bucket } .s3.{ server_region } .amazonaws.com"
439
- f"{ '.cn' if server_region .startswith ('cn' ) else '' } "
440
- f"/parallelcluster/{ get_installed_parallelcluster_version ()} /api/parallelcluster-api.yaml"
441
- )
442
- if server_region not in api_servers :
443
- logging .info (f"Creating API Server stack: { api_stack_name } in { server_region } with template { template } " )
444
- stack = CfnStack (
445
- name = api_stack_name ,
446
- region = server_region ,
447
- parameters = params ,
448
- capabilities = ["CAPABILITY_NAMED_IAM" , "CAPABILITY_AUTO_EXPAND" ],
449
- template = template ,
450
- )
451
- cfn_stacks_factory .create_stack (stack )
452
- api_servers [server_region ] = stack
431
+ option = "api_stack"
432
+ if request .config .getoption (option ):
433
+ api_stack_name = request .config .getoption (option )
434
+ logging .info (f"Using existing ParallelCluster API stack in { server_region } : { api_stack_name } " )
435
+ api_servers [server_region ] = CfnStack (name = api_stack_name , region = server_region , template = None )
453
436
else :
454
- logging .info (f"Found cached API Server stack: { api_stack_name } in { server_region } " )
437
+ api_stack_name = generate_stack_name ("integ-tests-api" , request .config .getoption ("stackname_suffix" ))
438
+
439
+ params = [
440
+ {"ParameterKey" : "EnableIamAdminAccess" , "ParameterValue" : "true" },
441
+ {"ParameterKey" : "CreateApiUserRole" , "ParameterValue" : "false" },
442
+ ]
443
+ if api_definition_s3_uri :
444
+ params .append ({"ParameterKey" : "ApiDefinitionS3Uri" , "ParameterValue" : api_definition_s3_uri })
445
+ if policies_uri :
446
+ params .append ({"ParameterKey" : "PoliciesTemplateUri" , "ParameterValue" : policies_uri })
447
+ if resource_bucket :
448
+ params .append ({"ParameterKey" : "CustomBucket" , "ParameterValue" : resource_bucket })
449
+
450
+ template = (
451
+ api_infrastructure_s3_uri
452
+ or f"https://{ resource_bucket } .s3.{ server_region } .amazonaws.com"
453
+ f"{ '.cn' if server_region .startswith ('cn' ) else '' } "
454
+ f"/parallelcluster/{ get_installed_parallelcluster_version ()} /api/parallelcluster-api.yaml"
455
+ )
456
+ if server_region not in api_servers :
457
+ logging .info (f"Creating API Server stack: { api_stack_name } in { server_region } with template { template } " )
458
+ stack = CfnStack (
459
+ name = api_stack_name ,
460
+ region = server_region ,
461
+ parameters = params ,
462
+ capabilities = ["CAPABILITY_NAMED_IAM" , "CAPABILITY_AUTO_EXPAND" ],
463
+ template = template ,
464
+ )
465
+ cfn_stacks_factory .create_stack (stack )
466
+ api_servers [server_region ] = stack
467
+ else :
468
+ logging .info (f"Found cached API Server stack: { api_stack_name } in { server_region } " )
455
469
456
470
return api_servers [server_region ]
457
471
0 commit comments