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
)