Bug 2408 Fix for cluster creation using subnets in AWS 13/15413/6
authoryshah <shahithya.y@tataelxsi.co.in>
Tue, 23 Sep 2025 09:47:12 +0000 (09:47 +0000)
committergarciadeblas <gerardo.garciadeblas@telefonica.com>
Tue, 11 Nov 2025 10:00:37 +0000 (11:00 +0100)
Change-Id: Id17fc50337d79c3cf93907db035949a2534bad48
Signed-off-by: yshah <shahithya.y@tataelxsi.co.in>
osm_lcm/k8s.py

index 2864198..3f7713a 100644 (file)
@@ -793,30 +793,35 @@ class ClusterLcm(GitOpsLcm):
                 db_cluster["credentials"] = cluster_creds
 
             # Retrieve subnets
-            if db_cluster["vim_type"] == "aws":
-                generic_object = await self.odu.list_object(
-                    api_group="ec2.aws.upbound.io",
-                    api_plural="subnets",
-                    api_version="v1beta1",
-                )
-                private_subnet = []
-                public_subnet = []
-                for subnet in generic_object:
-                    labels = subnet.get("metadata", {}).get("labels", {})
-                    status = subnet.get("status", {}).get("atProvider", {})
-                    # Extract relevant label values
-                    cluster_label = labels.get("cluster")
-                    access_label = labels.get("access")
-                    subnet_id = status.get("id")
-                    # Apply filtering
-                    if cluster_label == db_cluster["name"] and subnet_id:
-                        if access_label == "private":
-                            private_subnet.append(subnet_id)
-                        elif access_label == "public":
-                            public_subnet.append(subnet_id)
-                # Update db_cluster
-                db_cluster["private_subnet"] = private_subnet
-                db_cluster["public_subnet"] = public_subnet
+            if op_params.get("private_subnet") and op_params.get("public_subnet"):
+                db_cluster["private_subnet"] = op_params["private_subnet"]
+                db_cluster["public_subnet"] = op_params["public_subnet"]
+            else:
+                if db_vim["vim_type"] == "aws":
+                    generic_object = await self.odu.list_object(
+                        api_group="ec2.aws.upbound.io",
+                        api_plural="subnets",
+                        api_version="v1beta1",
+                    )
+                    private_subnet = []
+                    public_subnet = []
+                    for subnet in generic_object:
+                        labels = subnet.get("metadata", {}).get("labels", {})
+                        status = subnet.get("status", {}).get("atProvider", {})
+                        # Extract relevant label values
+                        cluster_label = labels.get("cluster")
+                        access_label = labels.get("access")
+                        subnet_id = status.get("id")
+                        # Apply filtering
+                        if cluster_label == db_cluster["name"] and subnet_id:
+                            if access_label == "private":
+                                private_subnet.append(subnet_id)
+                            elif access_label == "public":
+                                public_subnet.append(subnet_id)
+                    # Update db_cluster
+                    db_cluster["private_subnet"] = private_subnet
+                    db_cluster["public_subnet"] = public_subnet
+                    self.logger.info("DB cluster: {}".format(db_cluster))
 
             # Register the cluster in k8sclusters collection
             db_register["credentials"] = cluster_creds