636f8cd65d0616ff1e6c76ff92f887d25f210ba6
[testsuite/pythonsdk-tests.git] / src / onaptests / steps / cloud / connect_service_subscription_to_cloud_region.py
1 from onapsdk.aai.business import Customer, ServiceSubscription
2 from onapsdk.aai.cloud_infrastructure import CloudRegion, Tenant
3 from onapsdk.configuration import settings
4
5 from ..base import BaseStep
6 from .customer_service_subscription_create import CustomerServiceSubscriptionCreateStep
7 from .link_cloud_to_complex import LinkCloudRegionToComplexStep
8 from .register_cloud import RegisterCloudRegionStep
9
10
11 class ConnectServiceSubToCloudRegionStep(BaseStep):
12     """Connect service subscription to cloud region step."""
13
14     def __init__(self, cleanup=False):
15         """Initialize step.
16
17         Substeps:
18             - LinkCloudRegionToComplexStep,
19             - RegisterCloudRegionStep,
20             - CustomerServiceSubscriptionCreateStep.
21
22         """
23         super().__init__(cleanup=cleanup)
24         self.add_step(RegisterCloudRegionStep(cleanup=cleanup))
25         self.add_step(LinkCloudRegionToComplexStep(cleanup=cleanup))
26         self.add_step(CustomerServiceSubscriptionCreateStep(cleanup=cleanup))
27
28     @BaseStep.store_state
29     def execute(self):
30         """Connect service subsription to cloud region and tenant.
31
32         Use settings values:
33          - GLOBAL_CUSTOMER_ID,
34          - SERVICE_NAME,
35          - CLOUD_REGION_CLOUD_OWNER,
36          - CLOUD_REGION_ID.
37
38         """
39         super().execute()
40         customer: Customer = Customer.get_by_global_customer_id(
41             settings.GLOBAL_CUSTOMER_ID)
42         service_subscription: ServiceSubscription = customer.get_service_subscription_by_service_type(
43             settings.SERVICE_NAME)
44         cloud_region: CloudRegion = CloudRegion.get_by_id(
45             cloud_owner=settings.CLOUD_REGION_CLOUD_OWNER,
46             cloud_region_id=settings.CLOUD_REGION_ID,
47         )
48
49         # retrieve tenant
50         # for which we are sure that an availability zone has been created
51         tenant: Tenant = cloud_region.get_tenant(settings.TENANT_ID)
52
53         service_subscription.link_to_cloud_region_and_tenant(cloud_region=cloud_region, tenant=tenant)