diff --git a/e2e/tests.py b/e2e/tests.py index 8b971dda0..aec41dcac 100755 --- a/e2e/tests.py +++ b/e2e/tests.py @@ -1,23 +1,54 @@ #!/usr/bin/env python3 +import unittest from kubernetes import client, config +from pprint import pprint -def main(): +class SampleTestCase(unittest.TestCase): - config.load_kube_config() - v1 = client.CoreV1Api() + nodes = set(["kind-test-postgres-operator-worker", "kind-test-postgres-operator-worker2", "kind-test-postgres-operator-worker3"]) - body = { - "metadata": { - "labels": { - "lifecycle-status": "ready", - } + def setUp(self): + self.config = config.load_kube_config() + self.v1 = client.CoreV1Api() + + def test_assign_labels_to_nodes(self): + """ + Ensure labeling nodes through the externally connected Python client works. + Sample test case to illustrate potential test structure + """ + body = { + "metadata": { + "labels": { + "lifecycle-status": "ready" + } + } } - } + for node in self.nodes: + _ = self.v1.patch_node(node, body) - nodes = ["kind-test-postgres-operator-worker", "kind-test-postgres-operator-worker2", "kind-test-postgres-operator-worker3"] - for node in nodes: - _ = v1.patch_node(node, body) + labelled_nodes = set([]) + for node in self.nodes: + 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) + + assert self.nodes == labelled_nodes, "nodes incorrectly labelled" + + def tearDown(self): + """ + Each test must restore the original cluster state + to avoid introducing dependencies between tests + """ + body = { + "metadata": { + "labels": { + "lifecycle-status": None # deletes label + } + } + } + for node in self.nodes: + _ = self.v1.patch_node(node, body) if __name__ == '__main__': - main() \ No newline at end of file + unittest.main() \ No newline at end of file