Feature 10948: Set labels to new namespaces
Change-Id: I0f40d198d398c79f3e9badd8def8f884f60fb7f8
Signed-off-by: Gabriel Cuba <gcuba@whitestack.com>
diff --git a/n2vc/k8s_helm_base_conn.py b/n2vc/k8s_helm_base_conn.py
index 34d3129..2a588b4 100644
--- a/n2vc/k8s_helm_base_conn.py
+++ b/n2vc/k8s_helm_base_conn.py
@@ -2118,12 +2118,14 @@
self,
namespace,
cluster_uuid,
+ labels,
):
"""
Create a namespace in a specific cluster
- :param namespace: namespace to be created
+ :param namespace: Namespace to be created
:param cluster_uuid: K8s cluster uuid used to retrieve kubeconfig
+ :param labels: Dictionary with labels for the new namespace
:returns: None
"""
paths, env = self._init_paths_env(
@@ -2132,6 +2134,7 @@
kubectl = Kubectl(config_file=paths["kube_config"])
await kubectl.create_namespace(
name=namespace,
+ labels=labels,
)
async def delete_namespace(
diff --git a/n2vc/kubectl.py b/n2vc/kubectl.py
index 7cc6ac2..c16c95a 100644
--- a/n2vc/kubectl.py
+++ b/n2vc/kubectl.py
@@ -574,15 +574,16 @@
delay=1,
fallback=Exception("Failed creating the namespace"),
)
- async def create_namespace(self, name: str):
+ async def create_namespace(self, name: str, labels: dict = None):
"""
Create a namespace
:param: name: Name of the namespace to be created
+ :param: labels: Dictionary with labels for the new namespace
"""
v1_core = self.clients[CORE_CLIENT]
- metadata = V1ObjectMeta(name=name)
+ metadata = V1ObjectMeta(name=name, labels=labels)
namespace = V1Namespace(
metadata=metadata,
)
diff --git a/n2vc/tests/unit/test_kubectl.py b/n2vc/tests/unit/test_kubectl.py
index 6ba074f..a6d02ff 100644
--- a/n2vc/tests/unit/test_kubectl.py
+++ b/n2vc/tests/unit/test_kubectl.py
@@ -734,6 +734,7 @@
def setUp(self, mock_load_kube_config):
super(CreateNamespaceClass, self).setUp()
self.namespace = "osm"
+ self.labels = {"key": "value"}
self.kubectl = Kubectl()
@asynctest.fail_on(active_handles=True)
@@ -741,7 +742,21 @@
self,
mock_create_namespace,
):
- metadata = V1ObjectMeta(name=self.namespace)
+ metadata = V1ObjectMeta(name=self.namespace, labels=self.labels)
+ namespace = V1Namespace(
+ metadata=metadata,
+ )
+ await self.kubectl.create_namespace(
+ name=self.namespace,
+ labels=self.labels,
+ )
+ mock_create_namespace.assert_called_once_with(namespace)
+
+ async def test_namespace_is_created_default_labels(
+ self,
+ mock_create_namespace,
+ ):
+ metadata = V1ObjectMeta(name=self.namespace, labels=None)
namespace = V1Namespace(
metadata=metadata,
)