From ebc2aa36ac0b030443ec2ff3d6de9dc460403b71 Mon Sep 17 00:00:00 2001 From: Dylan Murray Date: Mon, 31 Oct 2016 14:43:13 -0400 Subject: [PATCH 1/2] Check if an OCP specific resource is being requested and use the oc_api URL --- .../providers/lib/kubeshift/openshift.py | 2 ++ tests/units/kubeshift/test_openshift.py | 26 ++++++++++++++++--- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/atomicapp/providers/lib/kubeshift/openshift.py b/atomicapp/providers/lib/kubeshift/openshift.py index b5cfa43d..a5a46515 100644 --- a/atomicapp/providers/lib/kubeshift/openshift.py +++ b/atomicapp/providers/lib/kubeshift/openshift.py @@ -180,6 +180,8 @@ def _generate_kurl(self, obj, namespace, name=None, params=None): url = self.k8s_api else: url = urljoin(self.k8s_apis, "%s/" % api_version) + elif resource in self.oc_api_resources: + url = self.oc_api else: raise KubeOpenshiftError("No kind by that name: %s" % kind) diff --git a/tests/units/kubeshift/test_openshift.py b/tests/units/kubeshift/test_openshift.py index af9f5e05..4ab5e1ad 100644 --- a/tests/units/kubeshift/test_openshift.py +++ b/tests/units/kubeshift/test_openshift.py @@ -43,7 +43,7 @@ def test_connection(self, *args): pass def get_resources(self, *args): - return ['Pod', 'template'] + return ['Pod', 'template', 'Route'] def get_groups(self, *args): return {} @@ -57,7 +57,7 @@ def cluster(self): @mock.patch("atomicapp.providers.lib.kubeshift.openshift.KubeBase") -def test_create(mock_class): +def test_k8s_create(mock_class): # Mock the API class mock_class.return_value = FakeClient() mock_class.get_resources.return_value = ['Pod'] @@ -69,9 +69,29 @@ def test_create(mock_class): a = KubeOpenshiftClient(config) a.create(k8s_object, "foobar") +@mock.patch("atomicapp.providers.lib.kubeshift.openshift.KubeBase") +def test_oc_create(mock_class): + mock_class.return_value = FakeClient() + mock_class.get_resources.return_value = ['Route'] + mock_class.kind_to_resource_name.return_value = 'Route' + + oc_object = {"apiVersion": "v1", "kind": "Route", "metadata": {"labels": {"name": "helloapache-route"}, "name": "helloapache-route"}, "spec": { + "host": "$endpoint", "to": [{"kind": "Service", "name": "helloapache-svc"}]}} + a = KubeOpenshiftClient(config) + a.create(oc_object, "foobar") + +@mock.patch("atomicapp.providers.lib.kubeshift.openshift.KubeBase") +def test_oc_delete(mock_class): + mock_class.return_value = FakeClient() + mock_class.kind_to_resource_name.return_value = 'Route' + + oc_object = {"apiVersion": "v1", "kind": "Route", "metadata": {"labels": {"name": "helloapache-route"}, "name": "helloapache-route"}, "spec": { + "host": "$endpoint", "to": [{"kind": "Service", "name": "helloapache-svc"}]}} + a = KubeOpenshiftClient(config) + a.delete(oc_object, "foobar") @mock.patch("atomicapp.providers.lib.kubeshift.openshift.KubeBase") -def test_delete(mock_class): +def test_k8s_delete(mock_class): # Mock the API class mock_class.return_value = FakeClient() mock_class.kind_to_resource_name.return_value = 'Pod' From fbe58c7e055bcaf4e9fe3a81dbbdab7556a8e790 Mon Sep 17 00:00:00 2001 From: Dylan Murray Date: Mon, 14 Nov 2016 12:07:22 -0500 Subject: [PATCH 2/2] Update cli/main.py to catch syntax error from latest version of flake8 --- atomicapp/cli/main.py | 1 + 1 file changed, 1 insertion(+) diff --git a/atomicapp/cli/main.py b/atomicapp/cli/main.py index 47bdafa4..46ac513a 100644 --- a/atomicapp/cli/main.py +++ b/atomicapp/cli/main.py @@ -540,5 +540,6 @@ def main(): cli = CLI() cli.run() + if __name__ == '__main__': main()