From 02c2d488bcef5d01005f5e02f4a6c7167f920f2c Mon Sep 17 00:00:00 2001 From: Sergey Dudoladov Date: Mon, 29 Apr 2019 12:23:39 +0200 Subject: [PATCH] create/delete the operator deployment --- e2e/tests/test_example.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/e2e/tests/test_example.py b/e2e/tests/test_example.py index 70b96e27c..5d77b9f6d 100755 --- a/e2e/tests/test_example.py +++ b/e2e/tests/test_example.py @@ -1,5 +1,5 @@ -import unittest, yaml +import unittest, yaml, time from kubernetes import client, config, utils from pprint import pprint import subprocess @@ -8,6 +8,7 @@ class SampleTestCase(unittest.TestCase): nodes = set(["kind-test-postgres-operator-worker", "kind-test-postgres-operator-worker2", "kind-test-postgres-operator-worker3"]) + config = None @classmethod def setUpClass(cls): @@ -16,19 +17,28 @@ class SampleTestCase(unittest.TestCase): _ = config.load_kube_config() k8s_client = client.ApiClient() - # HACK create_from_yaml fails with multiple object defined within a single file - # which is exactly the case with RBAC definition + # TODO split into multiple files subprocess.run(["kubectl", "create", "-f", "manifests/operator-service-account-rbac.yaml"]) for filename in ["configmap.yaml", "postgres-operator.yaml"]: path = "manifests/" + filename utils.create_from_yaml(k8s_client, path) - - #TODO wait until operator pod starts up label ; name=postgres-operator + + v1 = client.CoreV1Api() + pod_phase = None + + while pod_phase != 'Running': + pods = v1.list_namespaced_pod('default', label_selector='name=postgres-operator').items + if pods: + operator_pod = pods[0] + pod_phase = operator_pod.status.phase + print("Waiting for the operator pod to start. Current phase: " + pod_phase) + time.sleep(5) @classmethod def tearDownClass(cls): - pass + apps_v1 = client.AppsV1Api() + _ = apps_v1.delete_namespaced_deployment("postgres-operator", "default") def setUp(self): self.config = config.load_kube_config() @@ -54,7 +64,7 @@ class SampleTestCase(unittest.TestCase): v1_node_var = self.v1.read_node(node) if v1_node_var.metadata.labels['lifecycle-status'] == 'ready': labelled_nodes.add(v1_node_var.metadata.name) - + self.assertEqual(self.nodes, labelled_nodes,"nodes incorrectly labelled") def tearDown(self):