summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorspisarski <s.pisarski@cablelabs.com>2017-05-16 13:57:26 -0600
committerspisarski <s.pisarski@cablelabs.com>2017-05-16 13:57:26 -0600
commit6fd1af82cd7bf41274c4e1620006004b79628759 (patch)
treee60a9f18c777892f5fe3cb0a8b279cc99b847e20
parentf57080bd2a6412c8fdc50c68111e780f6c36a360 (diff)
Ensure creators' constructors cannot raise exceptions.
While creating unit tests for vPing that is using SNAPS, exceptions can be raised when retrieving their respective OpenStack clients with incorrect credentials. Moved client retrieval to the create() method which one should expect exceptions to be raised. JIRA: SNAPS-81 Change-Id: Id8e4279f60b97704b25a89c6312dcf2ebdc3f459 Signed-off-by: spisarski <s.pisarski@cablelabs.com>
-rw-r--r--snaps/openstack/create_flavor.py3
-rw-r--r--snaps/openstack/create_image.py3
-rw-r--r--snaps/openstack/create_instance.py22
-rw-r--r--snaps/openstack/create_keypairs.py3
-rw-r--r--snaps/openstack/create_network.py57
-rw-r--r--snaps/openstack/create_project.py3
-rw-r--r--snaps/openstack/create_router.py4
-rw-r--r--snaps/openstack/create_security_group.py7
-rw-r--r--snaps/openstack/create_user.py3
9 files changed, 56 insertions, 49 deletions
diff --git a/snaps/openstack/create_flavor.py b/snaps/openstack/create_flavor.py
index 30271c1..2d78be4 100644
--- a/snaps/openstack/create_flavor.py
+++ b/snaps/openstack/create_flavor.py
@@ -41,7 +41,7 @@ class OpenStackFlavor:
self.__os_creds = os_creds
self.flavor_settings = flavor_settings
self.__flavor = None
- self.__nova = nova_utils.nova_client(self.__os_creds)
+ self.__nova = None
def create(self, cleanup=False):
"""
@@ -49,6 +49,7 @@ class OpenStackFlavor:
:param cleanup: Denotes whether or not this is being called for cleanup or not
:return: The OpenStack flavor object
"""
+ self.__nova = nova_utils.nova_client(self.__os_creds)
self.__flavor = nova_utils.get_flavor_by_name(self.__nova, self.flavor_settings.name)
if self.__flavor:
logger.info('Found flavor with name - ' + self.flavor_settings.name)
diff --git a/snaps/openstack/create_image.py b/snaps/openstack/create_image.py
index 1e2e4dc..e8220d3 100644
--- a/snaps/openstack/create_image.py
+++ b/snaps/openstack/create_image.py
@@ -45,7 +45,7 @@ class OpenStackImage:
self.__image = None
self.__kernel_image = None
self.__ramdisk_image = None
- self.__glance = glance_utils.glance_client(os_creds)
+ self.__glance = None
def create(self, cleanup=False):
"""
@@ -53,6 +53,7 @@ class OpenStackImage:
:param cleanup: Denotes whether or not this is being called for cleanup or not
:return: The OpenStack Image object
"""
+ self.__glance = glance_utils.glance_client(self.__os_creds)
self.__image = glance_utils.get_image(self.__glance, self.image_settings.name)
if self.__image:
logger.info('Found image with name - ' + self.image_settings.name)
diff --git a/snaps/openstack/create_instance.py b/snaps/openstack/create_instance.py
index 9fa3232..e1e38a1 100644
--- a/snaps/openstack/create_instance.py
+++ b/snaps/openstack/create_instance.py
@@ -49,8 +49,8 @@ class OpenStackVmInstance:
"""
self.__os_creds = os_creds
- self.__nova = nova_utils.nova_client(self.__os_creds)
- self.__neutron = neutron_utils.neutron_client(self.__os_creds)
+ self.__nova = None
+ self.__neutron = None
self.instance_settings = instance_settings
self.image_settings = image_settings
@@ -74,16 +74,14 @@ class OpenStackVmInstance:
Additionally, when True, floating IPs will not be applied until VM is active.
:return: The VM reference object
"""
- try:
- self.__ports = self.__setup_ports(self.instance_settings.port_settings, cleanup)
- self.__lookup_existing_vm_by_name()
- if not self.__vm and not cleanup:
- self.__create_vm(block)
- return self.__vm
- except Exception as e:
- logger.exception('Error occurred while setting up instance')
- self.clean()
- raise e
+ self.__nova = nova_utils.nova_client(self.__os_creds)
+ self.__neutron = neutron_utils.neutron_client(self.__os_creds)
+
+ self.__ports = self.__setup_ports(self.instance_settings.port_settings, cleanup)
+ self.__lookup_existing_vm_by_name()
+ if not self.__vm and not cleanup:
+ self.__create_vm(block)
+ return self.__vm
def __lookup_existing_vm_by_name(self):
"""
diff --git a/snaps/openstack/create_keypairs.py b/snaps/openstack/create_keypairs.py
index 6af40c6..250acec 100644
--- a/snaps/openstack/create_keypairs.py
+++ b/snaps/openstack/create_keypairs.py
@@ -35,6 +35,7 @@ class OpenStackKeypair:
:param os_creds: The credentials to connect with OpenStack
:param keypair_settings: The settings used to create a keypair
"""
+ self.__nova = None
self.__os_creds = os_creds
self.keypair_settings = keypair_settings
self.__nova = nova_utils.nova_client(os_creds)
@@ -47,6 +48,8 @@ class OpenStackKeypair:
Responsible for creating the keypair object.
:param cleanup: Denotes whether or not this is being called for cleanup or not
"""
+ self.__nova = nova_utils.nova_client(self.__os_creds)
+
logger.info('Creating keypair %s...' % self.keypair_settings.name)
self.__keypair = nova_utils.get_keypair_by_name(self.__nova, self.keypair_settings.name)
diff --git a/snaps/openstack/create_network.py b/snaps/openstack/create_network.py
index 210c2bf..54f0b12 100644
--- a/snaps/openstack/create_network.py
+++ b/snaps/openstack/create_network.py
@@ -36,7 +36,7 @@ class OpenStackNetwork:
"""
self.__os_creds = os_creds
self.network_settings = network_settings
- self.__neutron = neutron_utils.neutron_client(self.__os_creds)
+ self.__neutron = None
# Attributes instantiated on create()
self.__network = None
@@ -48,37 +48,34 @@ class OpenStackNetwork:
:param cleanup: When true, only perform lookups for OpenStack objects.
:return: the created network object or None
"""
- try:
- logger.info('Creating neutron network %s...' % self.network_settings.name)
- net_inst = neutron_utils.get_network(self.__neutron, self.network_settings.name,
- self.network_settings.get_project_id(self.__os_creds))
- if net_inst:
- self.__network = net_inst
+ self.__neutron = neutron_utils.neutron_client(self.__os_creds)
+
+ logger.info('Creating neutron network %s...' % self.network_settings.name)
+ net_inst = neutron_utils.get_network(self.__neutron, self.network_settings.name,
+ self.network_settings.get_project_id(self.__os_creds))
+ if net_inst:
+ self.__network = net_inst
+ else:
+ if not cleanup:
+ self.__network = neutron_utils.create_network(self.__neutron, self.__os_creds,
+ self.network_settings)
+ else:
+ logger.info('Network does not exist and will not create as in cleanup mode')
+ return
+ logger.debug("Network '%s' created successfully" % self.__network['network']['id'])
+
+ logger.debug('Creating Subnets....')
+ for subnet_setting in self.network_settings.subnet_settings:
+ sub_inst = neutron_utils.get_subnet_by_name(self.__neutron, subnet_setting.name)
+ if sub_inst:
+ self.__subnets.append(sub_inst)
+ logger.debug("Subnet '%s' created successfully" % sub_inst['subnet']['id'])
else:
if not cleanup:
- self.__network = neutron_utils.create_network(self.__neutron, self.__os_creds,
- self.network_settings)
- else:
- logger.info('Network does not exist and will not create as in cleanup mode')
- return
- logger.debug("Network '%s' created successfully" % self.__network['network']['id'])
-
- logger.debug('Creating Subnets....')
- for subnet_setting in self.network_settings.subnet_settings:
- sub_inst = neutron_utils.get_subnet_by_name(self.__neutron, subnet_setting.name)
- if sub_inst:
- self.__subnets.append(sub_inst)
- logger.debug("Subnet '%s' created successfully" % sub_inst['subnet']['id'])
- else:
- if not cleanup:
- self.__subnets.append(neutron_utils.create_subnet(self.__neutron, subnet_setting,
- self.__os_creds, self.__network))
-
- return self.__network
- except Exception as e:
- logger.error('Unexpected exception thrown while creating network - ' + str(e))
- self.clean()
- raise e
+ self.__subnets.append(neutron_utils.create_subnet(self.__neutron, subnet_setting,
+ self.__os_creds, self.__network))
+
+ return self.__network
def clean(self):
"""
diff --git a/snaps/openstack/create_project.py b/snaps/openstack/create_project.py
index 2658d13..b60d396 100644
--- a/snaps/openstack/create_project.py
+++ b/snaps/openstack/create_project.py
@@ -39,7 +39,7 @@ class OpenStackProject:
self.project_settings = project_settings
self.__project = None
self.__role = None
- self.__keystone = keystone_utils.keystone_client(self.__os_creds)
+ self.__keystone = None
def create(self, cleanup=False):
"""
@@ -47,6 +47,7 @@ class OpenStackProject:
:param cleanup: Denotes whether or not this is being called for cleanup or not
:return: The OpenStack Image object
"""
+ self.__keystone = keystone_utils.keystone_client(self.__os_creds)
self.__project = keystone_utils.get_project(keystone=self.__keystone,
project_name=self.project_settings.name)
if self.__project:
diff --git a/snaps/openstack/create_router.py b/snaps/openstack/create_router.py
index 5c461cc..0b56424 100644
--- a/snaps/openstack/create_router.py
+++ b/snaps/openstack/create_router.py
@@ -42,7 +42,7 @@ class OpenStackRouter:
raise Exception('router_settings is required')
self.router_settings = router_settings
- self.__neutron = neutron_utils.neutron_client(os_creds)
+ self.__neutron = None
# Attributes instantiated on create()
self.__router = None
@@ -58,6 +58,8 @@ class OpenStackRouter:
:param cleanup: When true, only perform lookups for OpenStack objects.
:return: the router object
"""
+ self.__neutron = neutron_utils.neutron_client(self.__os_creds)
+
logger.debug('Creating Router with name - ' + self.router_settings.name)
existing = False
router_inst = neutron_utils.get_router_by_name(self.__neutron, self.router_settings.name)
diff --git a/snaps/openstack/create_security_group.py b/snaps/openstack/create_security_group.py
index 57f7284..4e98e82 100644
--- a/snaps/openstack/create_security_group.py
+++ b/snaps/openstack/create_security_group.py
@@ -37,8 +37,8 @@ class OpenStackSecurityGroup:
"""
self.__os_creds = os_creds
self.sec_grp_settings = sec_grp_settings
- self.__neutron = neutron_utils.neutron_client(os_creds)
- self.__keystone = keystone_utils.keystone_client(os_creds)
+ self.__neutron = None
+ self.__keystone = None
# Attributes instantiated on create()
self.__security_group = None
@@ -52,6 +52,9 @@ class OpenStackSecurityGroup:
:param cleanup: Denotes whether or not this is being called for cleanup or not
:return: the OpenStack security group object
"""
+ self.__neutron = neutron_utils.neutron_client(self.__os_creds)
+ self.__keystone = keystone_utils.keystone_client(self.__os_creds)
+
logger.info('Creating security group %s...' % self.sec_grp_settings.name)
self.__security_group = neutron_utils.get_security_group(self.__neutron, self.sec_grp_settings.name)
diff --git a/snaps/openstack/create_user.py b/snaps/openstack/create_user.py
index a8d0fcc..fe7a64c 100644
--- a/snaps/openstack/create_user.py
+++ b/snaps/openstack/create_user.py
@@ -38,7 +38,7 @@ class OpenStackUser:
self.__os_creds = os_creds
self.user_settings = user_settings
self.__user = None
- self.__keystone = keystone_utils.keystone_client(self.__os_creds)
+ self.__keystone = None
def create(self, cleanup=False):
"""
@@ -46,6 +46,7 @@ class OpenStackUser:
:param cleanup: Denotes whether or not this is being called for cleanup or not
:return: The OpenStack user object
"""
+ self.__keystone = keystone_utils.keystone_client(self.__os_creds)
self.__user = keystone_utils.get_user(self.__keystone, self.user_settings.name)
if self.__user:
logger.info('Found user with name - ' + self.user_settings.name)