From 788fddade6fc8375cffde4b500a33bdc94c74854 Mon Sep 17 00:00:00 2001 From: spisarski Date: Wed, 8 Nov 2017 12:53:14 -0700 Subject: Initial patch to begin adding support for Magnum. JIRA: SNAPS-212 Change-Id: I5f72fe9c28fe5cdd61546eee828becd034f8aff9 Signed-off-by: spisarski --- snaps/openstack/utils/magnum_utils.py | 33 +++++++++++++++ snaps/openstack/utils/tests/magnum_utils_tests.py | 50 +++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 snaps/openstack/utils/magnum_utils.py create mode 100644 snaps/openstack/utils/tests/magnum_utils_tests.py (limited to 'snaps/openstack/utils') diff --git a/snaps/openstack/utils/magnum_utils.py b/snaps/openstack/utils/magnum_utils.py new file mode 100644 index 0000000..abc771a --- /dev/null +++ b/snaps/openstack/utils/magnum_utils.py @@ -0,0 +1,33 @@ +# Copyright (c) 2017 Cable Television Laboratories, Inc. ("CableLabs") +# and others. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import logging + +from magnumclient.client import Client + +from snaps.openstack.utils import keystone_utils + +__author__ = 'spisarski' + +logger = logging.getLogger('heat_utils') + + +def magnum_client(os_creds): + """ + Retrieves the Heat client + :param os_creds: the OpenStack credentials + :return: the client + """ + logger.debug('Retrieving Nova Client') + return Client(session=keystone_utils.keystone_session(os_creds)) diff --git a/snaps/openstack/utils/tests/magnum_utils_tests.py b/snaps/openstack/utils/tests/magnum_utils_tests.py new file mode 100644 index 0000000..f4abc89 --- /dev/null +++ b/snaps/openstack/utils/tests/magnum_utils_tests.py @@ -0,0 +1,50 @@ +# Copyright (c) 2017 Cable Television Laboratories, Inc. ("CableLabs") +# and others. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import logging + +from snaps.openstack.os_credentials import OSCreds +from snaps.openstack.tests.os_source_file_test import OSComponentTestCase +from snaps.openstack.utils import magnum_utils + +__author__ = 'spisarski' + +logger = logging.getLogger('nova_utils_tests') + + +class MagnumSmokeTests(OSComponentTestCase): + """ + Tests to ensure that the magnum client can communicate with the cloud + """ + + def test_connect_success(self): + """ + Tests to ensure that the proper credentials can connect. + """ + magnum = magnum_utils.magnum_client(self.os_creds) + + # This should not throw an exception + magnum.clusters.list() + + def test_nova_connect_fail(self): + """ + Tests to ensure that the improper credentials cannot connect. + """ + + with self.assertRaises(RuntimeError): + magnum_utils.magnum_client( + OSCreds(username='user', password='pass', + auth_url=self.os_creds.auth_url, + project_name=self.os_creds.project_name, + proxy_settings=self.os_creds.proxy_settings)) -- cgit 1.2.3-korg