diff --git a/magnum_cluster_api/driver.py b/magnum_cluster_api/driver.py index 88d844ae..cccae780 100644 --- a/magnum_cluster_api/driver.py +++ b/magnum_cluster_api/driver.py @@ -250,7 +250,7 @@ def update_cluster_status( resources.ServiceAccountCertificateAuthoritySecret( context, self.k8s_api, cluster ).delete() - resources.ClusterServerGroups(self.k8s_api, cluster).delete() + resources.ClusterServerGroups(context, cluster).delete() cluster.status_reason = None cluster.status = fields.ClusterStatus.DELETE_COMPLETE diff --git a/magnum_cluster_api/resources.py b/magnum_cluster_api/resources.py index 26c461f2..76ed802a 100644 --- a/magnum_cluster_api/resources.py +++ b/magnum_cluster_api/resources.py @@ -109,9 +109,9 @@ def __init__( self, context: context.RequestContext, cluster: magnum_objects.Cluster ) -> None: self.cluster = cluster + self.context = context self.osc = clients.get_openstack_api(self.context) - @property def apply(self): # Create a server group for controlplane utils.ensure_controlplane_server_group(ctx=self.context, cluster=self.cluster) @@ -124,7 +124,6 @@ def apply(self): ctx=self.context, cluster=self.cluster, node_group=ng ) - @property def delete(self): # delete controlplane server group utils.delete_controlplane_server_group(ctx=self.context, cluster=self.cluster) @@ -1764,7 +1763,7 @@ def get_object(self) -> objects.ClusterClass: }, { "op": "add", - "path": "/spec/template/spec/serverGroup/id", + "path": "/spec/template/spec/serverGroupID", "valueFrom": { "variable": "serverGroupId", }, @@ -1798,7 +1797,7 @@ def get_object(self) -> objects.ClusterClass: }, { "op": "add", - "path": "/spec/template/spec/serverGroup/id", + "path": "/spec/template/spec/serverGroupID", "valueFrom": { "variable": "serverGroupId", }, @@ -2490,7 +2489,7 @@ def mutate_machine_deployment( utils.is_node_group_different_failure_domain( node_group=node_group, cluster=cluster ), - ), + ).lower(), }, }, ], @@ -2881,9 +2880,9 @@ def get_object(self) -> objects.Cluster: "value": { "different_failure_domain": str( utils.is_controlplane_different_failure_domain( - cluster=cluster + cluster=self.cluster ), - ), + ).lower(), }, }, ], diff --git a/magnum_cluster_api/utils.py b/magnum_cluster_api/utils.py index a441f7b7..4ffc8643 100644 --- a/magnum_cluster_api/utils.py +++ b/magnum_cluster_api/utils.py @@ -512,7 +512,8 @@ def get_server_group_id(name: string): return server_group_id # Check if the server group exists already - osc = clients.get_openstack_api(self.context) + admin_ctx = context.get_admin_context() + osc = clients.get_openstack_api(admin_ctx) server_groups = osc.nova().server_groups.list(all_projects=True) server_group_id_list = [] for sg in server_groups: @@ -533,9 +534,10 @@ def _get_node_group_server_group_policies( node_group: magnum_objects.NodeGroup, cluster: magnum_objects.Cluster, ): - - policies = node_group.labels.get("server_group_policies", "").split(",") - if not policies: + policies = node_group.labels.get("server_group_policies", "") + if policies: + policies = policies.split(",") + else: policies = _get_controlplane_server_group_policies(cluster) return policies @@ -543,9 +545,10 @@ def _get_node_group_server_group_policies( def _get_controlplane_server_group_policies( cluster: magnum_objects.Cluster, ): - - policies = cluster.labels.get("server_group_policies", "").split(",") - if not policies: + policies = cluster.labels.get("server_group_policies", "") + if policies: + policies = policies.split(",") + else: policies = DEFAULT_SERVER_GROUP_POLICIES return policies @@ -571,7 +574,7 @@ def ensure_controlplane_server_group( ctx: context.RequestContext, cluster: magnum_objects.Cluster, ): - _ensure_server_group( + return _ensure_server_group( name=cluster.stack_id, ctx=ctx, policies=_get_controlplane_server_group_policies(cluster), @@ -583,7 +586,7 @@ def ensure_worker_server_group( cluster: magnum_objects.Cluster, node_group: magnum_objects.NodeGroup, ): - _ensure_server_group( + return _ensure_server_group( name=f"{cluster.stack_id}-{node_group.name}", ctx=ctx, policies=_get_node_group_server_group_policies(node_group, cluster), @@ -625,6 +628,7 @@ def _ensure_server_group( osc = clients.get_openstack_api(ctx) if not policies: policies = DEFAULT_SERVER_GROUP_POLICIES + # NOTE(oleks): Requires API microversion 2.15 or later for soft-affinity and soft-anti-affinity policy rules. server_group = osc.nova().server_groups.create(name=name, policies=policies) SERVER_GROUP_NAME_ID_MAP[name] = server_group.id return server_group.id