Skip to content

Commit c4a5f67

Browse files
Update README and add option to change the namespace
Signed-off-by: michal.gubricky <[email protected]>
1 parent a57012b commit c4a5f67

File tree

2 files changed

+29
-23
lines changed

2 files changed

+29
-23
lines changed

Tests/kaas/plugin/README.md

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -74,29 +74,30 @@ The config file is used to set parameters for creating a Kubernetes cluster with
7474
These parameters configure specific settings for the cluster-stack:
7575

7676
```yaml
77-
cs_name: <cs_name> # Default: "scs"
78-
cs_version: <cs_version> # Default: "v1"
79-
cs_channel: <cs_channel> # Default: "stable"
80-
cs_cloudname: <cs_cloudname> # Default: "openstack"
77+
cs_name: <cs_name> # Cluster Stack Name, default: "scs"
78+
cs_version: <cs_version> # Cluster Stack Version
79+
cs_channel: <cs_channel> # Release channel
80+
cs_cloudname: <cs_cloudname> # Cloud name from OpenStack clouds.yaml
81+
cs_namespace: "default" # Namespace for the Cluster Stack deployment
8182
```
8283
8384
#### Git-Related Parameters
8485
8586
The [Cluster Stack Operator](https://github.com/sovereignCloudStack/cluster-stack-operator/) (CSO) utilizing the [Cluster Stack Provider OpenStack](https://github.com/SovereignCloudStack/cluster-stacks/tree/main/providers/openstack) (CSPO) must be directed to the Cluster Stacks repository housing releases for the OpenStack provider. Modify the following parameters if you wish to redirect CSO and CSPO to an alternative Git repository
8687
8788
```yaml
88-
git_provider: <git_provider> # Default: "github"
89-
git_org_name: <git_org_name> # Default: "SovereignCloudStack"
90-
git_repo_name: <git_repo_name> # Default: "cluster-stacks"
89+
git_provider: <git_provider> # Git provider, default: "github"
90+
git_org_name: <git_org_name> # Organization name on Git provider, default: "SovereignCloudStack"
91+
git_repo_name: <git_repo_name> # Repository name on Git provider, default: "cluster-stacks"
9192
```
9293
9394
#### Cluster Parameters
9495
9596
Set these parameters to customize the configuration for your cluster.
9697
9798
```yaml
98-
cs_pod_cidr: <cs_pod_cidr> # Default: "192.168.0.0/16"
99-
cs_service_cidr: <cs_service_cidr> # Default: "10.96.0.0/12"
100-
cs_external_id: <cs_external_id> # Default: A generated UUID
101-
cs_k8s_patch_version: <cs_k8s_patch_version> # Default: "6"
99+
cs_pod_cidr: <cs_pod_cidr> # Pod CIDR for networking
100+
cs_service_cidr: <cs_service_cidr> # Service CIDR for networking
101+
cs_external_id: <cs_external_id> # External ID for the Cluster Stack
102+
cs_k8s_patch_version: <cs_k8s_patch_version> # Kubernetes patch version to use
102103
```

Tests/kaas/plugin/plugin_cluster_stacks.py

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,9 @@ def create_cluster(self, cluster_name="scs-cluster", version=None, kubeconfig_fi
175175
self._apply_yaml_with_envsubst("cluster.yaml", "Error applying cluster.yaml", kubeconfig=self.kubeconfig_mgmnt_path)
176176

177177
# Get and wait on kubeadmcontrolplane and retrieve workload cluster kubeconfig
178-
kcp_name = self._get_kubeadm_control_plane_name(kubeconfig=self.kubeconfig_mgmnt_path)
179-
self._wait_kcp_ready(kcp_name, kubeconfig=self.kubeconfig_mgmnt_path)
180-
self._retrieve_kubeconfig(kubeconfig=self.kubeconfig_mgmnt_path)
178+
kcp_name = self._get_kubeadm_control_plane_name(namespace=self.cs_namespace, kubeconfig=self.kubeconfig_mgmnt_path)
179+
self._wait_kcp_ready(kcp_name, namespace=self.cs_namespace, kubeconfig=self.kubeconfig_mgmnt_path)
180+
self._retrieve_kubeconfig(namespace=self.cs_namespace, kubeconfig=self.kubeconfig_mgmnt_path)
181181

182182
# Wait for workload system pods to be ready
183183
# wait_for_workload_pods_ready(kubeconfig_path=self.kubeconfig_cs_cluster)
@@ -188,12 +188,12 @@ def delete_cluster(self, cluster_name=None, kubeconfig_filepath=None):
188188
kubeconfig_cs_cluster_filename = kubeconfig_filepath
189189
try:
190190
# Check if the cluster exists
191-
check_cluster_command = f"kubectl get cluster {cluster_name}"
191+
check_cluster_command = f"kubectl get cluster {cluster_name} -n {self.cs_namespace}"
192192
result = self._run_subprocess(check_cluster_command, "Failed to get cluster resource", shell=True, capture_output=True, text=True, kubeconfig=self.kubeconfig_mgmnt_path)
193193

194194
# Proceed with deletion only if the cluster exists
195195
if result.returncode == 0:
196-
delete_command = f"kubectl delete cluster {cluster_name} --timeout=600s"
196+
delete_command = f"kubectl delete cluster {cluster_name} --timeout=600s -n {self.cs_namespace}"
197197
self._run_subprocess(delete_command, "Timeout while deleting the cluster", shell=True, kubeconfig=self.kubeconfig_mgmnt_path)
198198

199199
except subprocess.CalledProcessError as error:
@@ -237,10 +237,12 @@ def _apply_yaml_with_envsubst(self, yaml_file, error_msg, kubeconfig=None):
237237
except subprocess.CalledProcessError as error:
238238
raise RuntimeError(f"{error_msg}: {error}")
239239

240-
def _get_kubeadm_control_plane_name(self, kubeconfig=None):
240+
def _get_kubeadm_control_plane_name(self, namespace="default", kubeconfig=None):
241241
"""
242-
Retrieves the name of the KubeadmControlPlane resource for the Kubernetes cluster.
242+
Retrieves the name of the KubeadmControlPlane resource for the Kubernetes cluster
243+
in the specified namespace.
243244
245+
:param namespace: The namespace to search for the KubeadmControlPlane resource.
244246
:param kubeconfig: Optional path to the kubeconfig file for the target Kubernetes cluster.
245247
246248
:return: The name of the KubeadmControlPlane resource as a string.
@@ -250,7 +252,8 @@ def _get_kubeadm_control_plane_name(self, kubeconfig=None):
250252
for _ in range(max_retries):
251253
try:
252254
kcp_command = (
253-
"kubectl get kubeadmcontrolplane -o=jsonpath='{.items[0].metadata.name}'"
255+
f"kubectl get kubeadmcontrolplane -n {namespace} "
256+
"-o=jsonpath='{.items[0].metadata.name}'"
254257
)
255258
kcp_name = self._run_subprocess(kcp_command, "Error retrieving kcp_name", shell=True, capture_output=True, text=True, kubeconfig=kubeconfig)
256259
logger.info(kcp_name)
@@ -265,31 +268,33 @@ def _get_kubeadm_control_plane_name(self, kubeconfig=None):
265268
else:
266269
raise RuntimeError("Failed to get kubeadmcontrolplane name")
267270

268-
def _wait_kcp_ready(self, kcp_name, kubeconfig=None):
271+
def _wait_kcp_ready(self, kcp_name, namespace="default", kubeconfig=None):
269272
"""
270273
Waits for the specified KubeadmControlPlane resource to become 'Available'.
271274
272275
:param kcp_name: The name of the KubeadmControlPlane resource to check for availability.
276+
:param namespace: The namespace where the KubeadmControlPlane resource is.
273277
:param kubeconfig: Optional path to the kubeconfig file for the target Kubernetes cluster.
274278
"""
275279
try:
276280
self._run_subprocess(
277-
f"kubectl wait kubeadmcontrolplane/{kcp_name} --for=condition=Available --timeout=600s",
281+
f"kubectl wait kubeadmcontrolplane/{kcp_name} --for=condition=Available --timeout=600s -n {namespace}",
278282
"Error waiting for kubeadmcontrolplane availability",
279283
shell=True,
280284
kubeconfig=kubeconfig
281285
)
282286
except subprocess.CalledProcessError as error:
283287
raise RuntimeError(f"Error waiting for kubeadmcontrolplane to be ready: {error}")
284288

285-
def _retrieve_kubeconfig(self, kubeconfig=None):
289+
def _retrieve_kubeconfig(self, namespace="default", kubeconfig=None):
286290
"""
287291
Retrieves the kubeconfig for the specified cluster and saves it to a local file.
288292
293+
:param namespace: The namespace of the cluster to retrieve the kubeconfig for.
289294
:param kubeconfig: Optional path to the kubeconfig file for the target Kubernetes cluster.
290295
"""
291296
kubeconfig_command = (
292-
f"sudo -E clusterctl get kubeconfig {self.cluster_name} > {self.kubeconfig_cs_cluster}"
297+
f"sudo -E clusterctl get kubeconfig {self.cluster_name} -n {namespace} > {self.kubeconfig_cs_cluster}"
293298
)
294299
self._run_subprocess(kubeconfig_command, "Error retrieving kubeconfig", shell=True, kubeconfig=kubeconfig)
295300

0 commit comments

Comments
 (0)