[vFW CNF CDS] Fix issue with multiple tenants creation for k8s region 75/125275/3
authorMichal Chabiera <michal.chabiera@orange.com>
Fri, 22 Oct 2021 13:30:31 +0000 (15:30 +0200)
committerMichal Chabiera <michal.chabiera@orange.com>
Fri, 22 Oct 2021 13:59:54 +0000 (15:59 +0200)
Every time create_cloud_regions is run tenant with new id is created for k8s region. With this fix tenants for k8s regions are searched by name.

Issue-ID: INT-1960
Signed-off-by: Michal Chabiera <michal.chabiera@orange.com>
Change-Id: I0b29fd6049e0b6e1f581eb1bd92882f43a2dbade

heat/vFW_CNF_CDS/automation/config.py
heat/vFW_CNF_CDS/automation/create_cloud_regions.py

index c0f7b1b..2c1c96e 100755 (executable)
@@ -14,8 +14,6 @@
 # limitations under the License.
 #
 # ============LICENSE_END=========================================================
-from uuid import uuid4
-
 
 class Config:
     SCENARIO = 1
@@ -117,7 +115,6 @@ class Config:
             "cloud_type": "k8s",
             "availability_zone": "k8s-availability-zone",
             "tenant": {
-                "id": str(uuid4()),
                 "name": K8S_REGION + "-tenant"
             },
             "customer_resource_definitions": [
index d4b318f..eb3e95b 100755 (executable)
@@ -17,6 +17,7 @@
 
 import logging
 import os
+from uuid import uuid4
 
 from onapsdk.so.so_db_adapter import SoDbAdapter, IdentityService
 
@@ -109,17 +110,29 @@ def add_availability_zone(cloud_region):
 def add_tenant(cloud_region):
     logger.info("******** Tenant *******")
     region_id = cloud_region.cloud_region_id
-    tenant_id = Config.CLOUD_REGIONS[region_id]["tenant"]["id"]
+    is_k8s = is_k8s_region(region_id)
     tenant_name = Config.CLOUD_REGIONS[region_id]["tenant"]["name"]
 
-    try:
-        cloud_region.get_tenant(tenant_id)
-        logger.info("Tenant exists")
-    except ResourceNotFound:
-        logger.info("Tenant does not exist")
-        cloud_region.add_tenant(tenant_id=tenant_id,
-                                tenant_name=tenant_name)
-        logger.info("Tenant added to region")
+    if is_k8s:
+        try:
+            next(_tenant for _tenant in cloud_region.tenants if _tenant.name == tenant_name)
+            logger.info("Tenant exists")
+        except (StopIteration, ResourceNotFound):
+            tenant_id = str(uuid4())
+            logger.info("Tenant does not exist")
+            cloud_region.add_tenant(tenant_id=tenant_id,
+                                    tenant_name=tenant_name)
+            logger.info(f"Tenant {tenant_name} added to region")
+    else:
+        tenant_id = Config.CLOUD_REGIONS[region_id]["tenant"]["id"]
+        try:
+            cloud_region.get_tenant(tenant_id)
+            logger.info("Tenant exists")
+        except ResourceNotFound:
+            logger.info("Tenant does not exist")
+            cloud_region.add_tenant(tenant_id=tenant_id,
+                                    tenant_name=tenant_name)
+            logger.info(f"Tenant {tenant_name} added to region")
 
 
 def create_customer():