6836b12a4cd0ad76ed6730d104e7f86f8c74c076
[testsuite/pythonsdk-tests.git] / src / onaptests / steps / cloud / register_cloud.py
1 import time
2 from uuid import uuid4
3
4 from onapsdk.aai.cloud_infrastructure import CloudRegion
5 from onapsdk.configuration import settings
6
7 from ..base import BaseStep
8
9
10 class RegisterCloudRegionStep(BaseStep):
11     """Cloud region registration step."""
12
13     @BaseStep.store_state
14     def execute(self):
15         """Register cloud region
16
17         Use settings values:
18          - CLOUD_REGION_CLOUD_OWNER,
19          - CLOUD_REGION_ID,
20          - CLOUD_DOMAIN,
21          - VIM_USERNAME,
22          - VIM_PASSWORD,
23          - VIM_SERVICE_URL,
24          - TENANT_NAME.
25         """
26         super().execute()
27         self._logger.info("*Check if cloud region exists *")
28         try:
29             cloud_region: CloudRegion = CloudRegion.get_by_id(
30                 cloud_owner=settings.CLOUD_REGION_CLOUD_OWNER,
31                 cloud_region_id=settings.CLOUD_REGION_ID,
32             )
33         except ValueError:
34             self._logger.info("*Create the cloud region *")
35             cloud_region: CloudRegion = CloudRegion.create(
36                 cloud_owner=settings.CLOUD_REGION_CLOUD_OWNER,
37                 cloud_region_id=settings.CLOUD_REGION_ID,
38                 orchestration_disabled=False,
39                 in_maint=False,
40                 cloud_type=settings.CLOUD_REGION_TYPE,
41                 cloud_region_version=settings.CLOUD_REGION_VERSION
42             )
43             cloud_region.add_esr_system_info(
44                 esr_system_info_id=str(uuid4()),
45                 user_name=settings.VIM_USERNAME,
46                 password=settings.VIM_PASSWORD,
47                 system_type="VIM",
48                 service_url=settings.VIM_SERVICE_URL,
49                 ssl_insecure=False,
50                 system_status="active",
51                 cloud_domain=settings.CLOUD_DOMAIN,
52                 default_tenant=settings.TENANT_NAME
53             )
54             if settings.USE_MULTICLOUD:
55                 self._logger.info("*Multicloud registration *")
56                 cloud_region.register_to_multicloud()
57                 time.sleep(20)
58                 nb_try = 0
59                 nb_try_max = 3
60                 while nb_try < nb_try_max:
61                     if not cloud_region.tenants:
62                         time.sleep(20)
63                     else:
64                         break
65                     nb_try += 1
66
67             # Retrieve the tenant, created by multicloud registration
68             # if it does not exist, create it
69             try:
70                 cloud_region.get_tenant(settings.TENANT_ID)
71             except ValueError:
72                 self._logger.warning("Impossible to retrieve the Specificed Tenant")
73                 self._logger.debug("If no multicloud selected, add the tenant")
74                 cloud_region.add_tenant(
75                     tenant_id=settings.TENANT_ID,
76                     tenant_name=settings.TENANT_NAME)
77
78             # be sure that an availability zone has been created
79             # if not, create it
80             try:
81                 cloud_region.get_availability_zone_by_name(
82                     settings.AVAILABILITY_ZONE_NAME)
83             except ValueError:
84                 cloud_region.add_availability_zone(
85                     settings.AVAILABILITY_ZONE_NAME,
86                     settings.AVAILABILITY_ZONE_TYPE)