Update cluster configuration to support feature 11055

Change-Id: I350be30250ac87aebe83f3284e2dab859df254f8
Signed-off-by: rshri <shrinithi.r@tataelxsi.co.in>
diff --git a/osm_lcm/k8s.py b/osm_lcm/k8s.py
index 3a2d8b7..a273b42 100644
--- a/osm_lcm/k8s.py
+++ b/osm_lcm/k8s.py
@@ -478,22 +478,43 @@
         )
         db_cluster["current_operation"] = None
 
-        # Retrieve credentials
+        # Retrieve credentials and subnets and register the cluster in k8sclusters collection
         cluster_creds = None
+        db_register = self.db.get_one("k8sclusters", {"name": db_cluster["name"]})
         if db_cluster["resourceState"] == "READY" and db_cluster["state"] == "CREATED":
+            # Retrieve credentials
             result, cluster_creds = await self.odu.get_cluster_credentials(db_cluster)
             # TODO: manage the case where the credentials are not available
             if result:
                 db_cluster["credentials"] = cluster_creds
 
-        # Update db_cluster
-        self.db.set_one("clusters", {"_id": db_cluster["_id"]}, db_cluster)
-        self.update_default_profile_agekeys(db_cluster_copy)
-        self.update_profile_state(db_cluster, workflow_status, resource_status)
+            # 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
 
-        # Register the cluster in k8sclusters collection
-        db_register = self.db.get_one("k8sclusters", {"name": db_cluster["name"]})
-        if cluster_creds:
+            # Register the cluster in k8sclusters collection
             db_register["credentials"] = cluster_creds
             # To call the lcm.py for registering the cluster in k8scluster lcm.
             self.db.set_one("k8sclusters", {"_id": db_register["_id"]}, db_register)
@@ -501,11 +522,13 @@
             self.logger.debug(f"Register is : {register}")
         else:
             db_register["_admin"]["operationalState"] = "ERROR"
-            result, cluster_creds = await self.odu.get_cluster_credentials(db_cluster)
-            # To call the lcm.py for registering the cluster in k8scluster lcm.
-            db_register["credentials"] = cluster_creds
             self.db.set_one("k8sclusters", {"_id": db_register["_id"]}, db_register)
 
+        # Update db_cluster
+        self.db.set_one("clusters", {"_id": db_cluster["_id"]}, db_cluster)
+        self.update_default_profile_agekeys(db_cluster_copy)
+        self.update_profile_state(db_cluster, workflow_status, resource_status)
+
         return
 
     async def check_create_cluster(self, op_id, op_params, content):
@@ -577,20 +600,21 @@
             ]
         else:
             return False, "Not suitable VIM account to check cluster status"
-        if nodegroup_name:
-            nodegroup_check = {
-                "item": f"nodegroup_{cloud_type}",
-                "name": nodegroup_name,
-                "namespace": "",
-                "condition": {
-                    "jsonpath_filter": "status.conditions[?(@.type=='Ready')].status",
-                    "value": "True",
-                },
-                "timeout": self._checkloop_resource_timeout,
-                "enable": True,
-                "resourceState": "IN_PROGRESS.RESOURCE_READY.NODEGROUP",
-            }
-            checkings_list.insert(3, nodegroup_check)
+        if cloud_type != "aws":
+            if nodegroup_name:
+                nodegroup_check = {
+                    "item": f"nodegroup_{cloud_type}",
+                    "name": nodegroup_name,
+                    "namespace": "",
+                    "condition": {
+                        "jsonpath_filter": "status.conditions[?(@.type=='Ready')].status",
+                        "value": "True",
+                    },
+                    "timeout": self._checkloop_resource_timeout,
+                    "enable": True,
+                    "resourceState": "IN_PROGRESS.RESOURCE_READY.NODEGROUP",
+                }
+                checkings_list.insert(3, nodegroup_check)
         return await self.common_check_list(
             op_id, checkings_list, "clusters", db_cluster
         )