Closing keystone sessions after done with them. 35/53435/4
authorspisarski <s.pisarski@cablelabs.com>
Fri, 9 Mar 2018 21:42:34 +0000 (14:42 -0700)
committerspisarski <s.pisarski@cablelabs.com>
Mon, 12 Mar 2018 14:28:45 +0000 (08:28 -0600)
By not closing all of the keystone sessions being created when
running all of the tests, this may be the root cause to the IOError
occasionally being observed:

IOError: [Errno 24] Too many open files

JIRA: SNAPS-285

Change-Id: I7fc7ab0c6cdd02f1ae32bb3ae4f121cb465d5693
Signed-off-by: spisarski <s.pisarski@cablelabs.com>
50 files changed:
snaps/config/network.py
snaps/config/router.py
snaps/domain/network.py
snaps/openstack/cluster_template.py
snaps/openstack/create_flavor.py
snaps/openstack/create_image.py
snaps/openstack/create_instance.py
snaps/openstack/create_keypairs.py
snaps/openstack/create_network.py
snaps/openstack/create_project.py
snaps/openstack/create_qos.py
snaps/openstack/create_router.py
snaps/openstack/create_security_group.py
snaps/openstack/create_stack.py
snaps/openstack/create_user.py
snaps/openstack/create_volume.py
snaps/openstack/create_volume_type.py
snaps/openstack/openstack_creator.py
snaps/openstack/tests/cluster_template_tests.py
snaps/openstack/tests/create_flavor_tests.py
snaps/openstack/tests/create_image_tests.py
snaps/openstack/tests/create_instance_tests.py
snaps/openstack/tests/create_keypairs_tests.py
snaps/openstack/tests/create_network_tests.py
snaps/openstack/tests/create_project_tests.py
snaps/openstack/tests/create_qos_tests.py
snaps/openstack/tests/create_router_tests.py
snaps/openstack/tests/create_security_group_tests.py
snaps/openstack/tests/create_stack_tests.py
snaps/openstack/tests/create_user_tests.py
snaps/openstack/tests/create_volume_tests.py
snaps/openstack/tests/create_volume_type_tests.py
snaps/openstack/tests/os_source_file_test.py
snaps/openstack/utils/cinder_utils.py
snaps/openstack/utils/glance_utils.py
snaps/openstack/utils/heat_utils.py
snaps/openstack/utils/keystone_utils.py
snaps/openstack/utils/launch_utils.py
snaps/openstack/utils/magnum_utils.py
snaps/openstack/utils/neutron_utils.py
snaps/openstack/utils/nova_utils.py
snaps/openstack/utils/tests/cinder_utils_tests.py
snaps/openstack/utils/tests/glance_utils_tests.py
snaps/openstack/utils/tests/heat_utils_tests.py
snaps/openstack/utils/tests/keystone_utils_tests.py
snaps/openstack/utils/tests/magnum_utils_tests.py
snaps/openstack/utils/tests/neutron_utils_tests.py
snaps/openstack/utils/tests/nova_utils_tests.py
snaps/openstack/utils/tests/settings_utils_tests.py
snaps/provisioning/tests/ansible_utils_tests.py

index 5f18c6b..8148c61 100644 (file)
@@ -98,11 +98,15 @@ class NetworkConfig(object):
             return self.project_id
         else:
             if self.project_name:
             return self.project_id
         else:
             if self.project_name:
-                keystone = keystone_utils.keystone_client(os_creds)
-                project = keystone_utils.get_project(
-                    keystone=keystone, project_name=self.project_name)
-                if project:
-                    return project.id
+                session = keystone_utils.keystone_session(os_creds)
+                keystone = keystone_utils.keystone_client(os_creds, session)
+                try:
+                    project = keystone_utils.get_project(
+                        keystone=keystone, project_name=self.project_name)
+                    if project:
+                        return project.id
+                finally:
+                    keystone_utils.close_session(session)
 
         return None
 
 
         return None
 
@@ -255,9 +259,13 @@ class SubnetConfig(object):
         if self.name:
             out['name'] = self.name
         if self.project_name:
         if self.name:
             out['name'] = self.name
         if self.project_name:
-            keystone = keystone_utils.keystone_client(os_creds)
-            project = keystone_utils.get_project(
-                keystone=keystone, project_name=self.project_name)
+            session = keystone_utils.keystone_session(os_creds)
+            keystone = keystone_utils.keystone_client(os_creds, session)
+            try:
+                project = keystone_utils.get_project(
+                    keystone=keystone, project_name=self.project_name)
+            finally:
+                keystone_utils.close_session(session)
             project_id = None
             if project:
                 project_id = project.id
             project_id = None
             if project:
                 project_id = project.id
@@ -441,10 +449,15 @@ class PortConfig(object):
 
         out = dict()
 
 
         out = dict()
 
-        keystone = keystone_utils.keystone_client(os_creds)
-        network = neutron_utils.get_network(
-            neutron, keystone, network_name=self.network_name,
-            project_name=self.project_name)
+        session = keystone_utils.keystone_session(os_creds)
+        keystone = keystone_utils.keystone_client(os_creds, session)
+        try:
+            network = neutron_utils.get_network(
+                neutron, keystone, network_name=self.network_name,
+                project_name=self.project_name)
+        finally:
+            keystone_utils.close_session(session)
+
         if not network:
             raise PortConfigError(
                 'Cannot locate network with name - ' + self.network_name
         if not network:
             raise PortConfigError(
                 'Cannot locate network with name - ' + self.network_name
index f5bbbf0..6b03ad2 100644 (file)
@@ -78,31 +78,34 @@ class RouterConfig(object):
         out = dict()
         ext_gw = dict()
 
         out = dict()
         ext_gw = dict()
 
-        keystone = keystone_utils.keystone_client(os_creds)
-
-        if self.name:
-            out['name'] = self.name
-        if self.project_name:
-            project = keystone_utils.get_project(
-                keystone=keystone, project_name=self.project_name)
-            if project:
-                    out['tenant_id'] = project.id
-            else:
-                raise RouterConfigError(
-                    'Could not find project ID for project named - ' +
-                    self.project_name)
-        if self.admin_state_up is not None:
-            out['admin_state_up'] = self.admin_state_up
-        if self.external_gateway:
-            ext_net = neutron_utils.get_network(
-                neutron, keystone, network_name=self.external_gateway)
-            if ext_net:
-                ext_gw['network_id'] = ext_net.id
-                out['external_gateway_info'] = ext_gw
-            else:
-                raise RouterConfigError(
-                    'Could not find the external network named - ' +
-                    self.external_gateway)
+        session = keystone_utils.keystone_session(os_creds)
+        keystone = keystone_utils.keystone_client(os_creds, session)
+        try:
+            if self.name:
+                out['name'] = self.name
+            if self.project_name:
+                project = keystone_utils.get_project(
+                    keystone=keystone, project_name=self.project_name)
+                if project:
+                        out['tenant_id'] = project.id
+                else:
+                    raise RouterConfigError(
+                        'Could not find project ID for project named - ' +
+                        self.project_name)
+            if self.admin_state_up is not None:
+                out['admin_state_up'] = self.admin_state_up
+            if self.external_gateway:
+                ext_net = neutron_utils.get_network(
+                    neutron, keystone, network_name=self.external_gateway)
+                if ext_net:
+                    ext_gw['network_id'] = ext_net.id
+                    out['external_gateway_info'] = ext_gw
+                else:
+                    raise RouterConfigError(
+                        'Could not find the external network named - ' +
+                        self.external_gateway)
+        finally:
+            keystone_utils.close_session(session)
 
         return {'router': out}
 
 
         return {'router': out}
 
index aabec21..a028e2b 100644 (file)
@@ -46,7 +46,6 @@ class Network:
                 self.admin_state_up == other.admin_state_up and
                 self.shared == other.shared and
                 self.external == other.external and
                 self.admin_state_up == other.admin_state_up and
                 self.shared == other.shared and
                 self.external == other.external and
-                self.type == other.type and
                 self.subnets == other.subnets)
 
 
                 self.subnets == other.subnets)
 
 
index c4ba76d..f6c7aa2 100644 (file)
@@ -85,6 +85,8 @@ class OpenStackClusterTemplate(OpenStackMagnumObject):
 
         self.__cluster_template = None
 
 
         self.__cluster_template = None
 
+        super(self.__class__, self).clean()
+
     def get_cluster_template(self):
         """
         Returns the domain Volume object as it was populated when create() was
     def get_cluster_template(self):
         """
         Returns the domain Volume object as it was populated when create() was
index 65b9059..48b3e7c 100644 (file)
@@ -87,6 +87,8 @@ class OpenStackFlavor(OpenStackComputeObject):
 
             self.__flavor = None
 
 
             self.__flavor = None
 
+        super(self.__class__, self).clean()
+
     def get_flavor(self):
         """
         Returns the OpenStack flavor object
     def get_flavor(self):
         """
         Returns the OpenStack flavor object
index a5520e3..1a8aa12 100644 (file)
@@ -54,7 +54,10 @@ class OpenStackImage(OpenStackCloudObject):
         Loads the existing Image
         :return: The Image domain object or None
         """
         Loads the existing Image
         :return: The Image domain object or None
         """
-        self.__glance = glance_utils.glance_client(self._os_creds)
+        super(self.__class__, self).initialize()
+
+        self.__glance = glance_utils.glance_client(
+            self._os_creds, self._os_session)
         self.__image = glance_utils.get_image(
             self.__glance, image_settings=self.image_settings)
 
         self.__image = glance_utils.get_image(
             self.__glance, image_settings=self.image_settings)
 
@@ -145,6 +148,11 @@ class OpenStackImage(OpenStackCloudObject):
         self.__kernel_image = None
         self.__ramdisk_image = None
 
         self.__kernel_image = None
         self.__ramdisk_image = None
 
+        if self.__glance:
+            self.__glance.http_client.session.session.close()
+
+        super(self.__class__, self).clean()
+
     def get_image(self):
         """
         Returns the domain Image object as it was populated when create() was
     def get_image(self):
         """
         Returns the domain Image object as it was populated when create() was
index a964723..45666d5 100644 (file)
@@ -73,8 +73,14 @@ class OpenStackVmInstance(OpenStackComputeObject):
         """
         super(self.__class__, self).initialize()
 
         """
         super(self.__class__, self).initialize()
 
-        self.__neutron = neutron_utils.neutron_client(self._os_creds)
-        self.__keystone = keystone_utils.keystone_client(self._os_creds)
+        self.__neutron = neutron_utils.neutron_client(
+            self._os_creds, self._os_session)
+        self.__keystone = keystone_utils.keystone_client(
+            self._os_creds, self._os_session)
+        self.__cinder = cinder_utils.cinder_client(
+            self._os_creds, self._os_session)
+        self.__glance = glance_utils.glance_client(
+            self._os_creds, self._os_session)
 
         self.__ports = self.__query_ports(self.instance_settings.port_settings)
         self.__lookup_existing_vm_by_name()
 
         self.__ports = self.__query_ports(self.instance_settings.port_settings)
         self.__lookup_existing_vm_by_name()
@@ -134,9 +140,8 @@ class OpenStackVmInstance(OpenStackComputeObject):
                       active, error, or timeout waiting. Floating IPs will be
                       assigned after active when block=True
         """
                       active, error, or timeout waiting. Floating IPs will be
                       assigned after active when block=True
         """
-        glance = glance_utils.glance_client(self._os_creds)
         self.__vm = nova_utils.create_server(
         self.__vm = nova_utils.create_server(
-            self._nova, self.__keystone, self.__neutron, glance,
+            self._nova, self.__keystone, self.__neutron, self.__glance,
             self.instance_settings, self.image_settings,
             self._os_creds.project_name, self.keypair_settings)
         logger.info('Created instance with name - %s',
             self.instance_settings, self.image_settings,
             self._os_creds.project_name, self.keypair_settings)
         logger.info('Created instance with name - %s',
@@ -162,9 +167,8 @@ class OpenStackVmInstance(OpenStackComputeObject):
 
         if self.instance_settings.volume_names:
             for volume_name in self.instance_settings.volume_names:
 
         if self.instance_settings.volume_names:
             for volume_name in self.instance_settings.volume_names:
-                cinder = cinder_utils.cinder_client(self._os_creds)
                 volume = cinder_utils.get_volume(
                 volume = cinder_utils.get_volume(
-                    cinder, self.__keystone, volume_name=volume_name,
+                    self.__cinder, self.__keystone, volume_name=volume_name,
                     project_name=self._os_creds.project_name)
 
                 if volume and self.vm_active(block=True):
                     project_name=self._os_creds.project_name)
 
                 if volume and self.vm_active(block=True):
@@ -271,9 +275,8 @@ class OpenStackVmInstance(OpenStackComputeObject):
         if self.__vm:
             # Detach Volume
             for volume_rec in self.__vm.volume_ids:
         if self.__vm:
             # Detach Volume
             for volume_rec in self.__vm.volume_ids:
-                cinder = cinder_utils.cinder_client(self._os_creds)
                 volume = cinder_utils.get_volume_by_id(
                 volume = cinder_utils.get_volume_by_id(
-                    cinder, volume_rec['id'])
+                    self.__cinder, volume_rec['id'])
                 if volume:
                     vm = nova_utils.detach_volume(
                         self._nova, self.__neutron, self.__keystone, self.__vm,
                 if volume:
                     vm = nova_utils.detach_volume(
                         self._nova, self.__neutron, self.__keystone, self.__vm,
@@ -310,6 +313,8 @@ class OpenStackVmInstance(OpenStackComputeObject):
                     'VM not deleted within the timeout period of %s '
                     'seconds', self.instance_settings.vm_delete_timeout)
 
                     'VM not deleted within the timeout period of %s '
                     'seconds', self.instance_settings.vm_delete_timeout)
 
+        super(self.__class__, self).clean()
+
     def __query_ports(self, port_settings):
         """
         Returns the previously configured ports or an empty list if none
     def __query_ports(self, port_settings):
         """
         Returns the previously configured ports or an empty list if none
@@ -795,16 +800,21 @@ def generate_creator(os_creds, vm_inst, image_config, project_name,
     :param keypair_config: the associated KeypairConfig object (optional)
     :return: an initialized OpenStackVmInstance object
     """
     :param keypair_config: the associated KeypairConfig object (optional)
     :return: an initialized OpenStackVmInstance object
     """
-    nova = nova_utils.nova_client(os_creds)
-    keystone = keystone_utils.keystone_client(os_creds)
-    neutron = neutron_utils.neutron_client(os_creds)
-    derived_inst_config = settings_utils.create_vm_inst_config(
-        nova, keystone, neutron, vm_inst, project_name)
-
-    derived_inst_creator = OpenStackVmInstance(
-        os_creds, derived_inst_config, image_config, keypair_config)
-    derived_inst_creator.initialize()
-    return derived_inst_creator
+    session = keystone_utils.keystone_session(os_creds)
+    nova = nova_utils.nova_client(os_creds, session)
+    keystone = keystone_utils.keystone_client(os_creds, session)
+    neutron = neutron_utils.neutron_client(os_creds, session)
+
+    try:
+        derived_inst_config = settings_utils.create_vm_inst_config(
+            nova, keystone, neutron, vm_inst, project_name)
+
+        derived_inst_creator = OpenStackVmInstance(
+            os_creds, derived_inst_config, image_config, keypair_config)
+        derived_inst_creator.initialize()
+        return derived_inst_creator
+    finally:
+        keystone_utils.close_session(session)
 
 
 class VmInstanceSettings(VmInstanceConfig):
 
 
 class VmInstanceSettings(VmInstanceConfig):
index a181a7b..b037c3f 100644 (file)
@@ -133,6 +133,8 @@ class OpenStackKeypair(OpenStackComputeObject):
                 os.remove(expanded_path)
                 logger.info('Deleted private key file [%s]', expanded_path)
 
                 os.remove(expanded_path)
                 logger.info('Deleted private key file [%s]', expanded_path)
 
+        super(self.__class__, self).clean()
+
     def get_keypair(self):
         """
         Returns the OpenStack keypair object
     def get_keypair(self):
         """
         Returns the OpenStack keypair object
index 3d50eb5..13c9667 100644 (file)
@@ -19,7 +19,7 @@ from neutronclient.common.exceptions import NetworkNotFoundClient, Unauthorized
 
 from snaps.config.network import NetworkConfig, SubnetConfig, PortConfig
 from snaps.openstack.openstack_creator import OpenStackNetworkObject
 
 from snaps.config.network import NetworkConfig, SubnetConfig, PortConfig
 from snaps.openstack.openstack_creator import OpenStackNetworkObject
-from snaps.openstack.utils import neutron_utils, keystone_utils
+from snaps.openstack.utils import neutron_utils
 
 __author__ = 'spisarski'
 
 
 __author__ = 'spisarski'
 
@@ -52,9 +52,8 @@ class OpenStackNetwork(OpenStackNetworkObject):
         super(self.__class__, self).initialize()
 
         try:
         super(self.__class__, self).initialize()
 
         try:
-            keystone = keystone_utils.keystone_client(self._os_creds)
             self.__network = neutron_utils.get_network(
             self.__network = neutron_utils.get_network(
-                self._neutron, keystone,
+                self._neutron, self._keystone,
                 network_settings=self.network_settings,
                 project_name=self._os_creds.project_name)
         except Unauthorized as e:
                 network_settings=self.network_settings,
                 project_name=self._os_creds.project_name)
         except Unauthorized as e:
@@ -83,12 +82,13 @@ class OpenStackNetwork(OpenStackNetworkObject):
         """
         Removes and deletes all items created in reverse order.
         """
         """
         Removes and deletes all items created in reverse order.
         """
-        if self.__network:
-            try:
-                neutron_utils.delete_network(self._neutron, self.__network)
-            except NetworkNotFoundClient:
-                pass
-            self.__network = None
+        try:
+            neutron_utils.delete_network(self._neutron, self.__network)
+        except NetworkNotFoundClient:
+            pass
+        self.__network = None
+
+        super(self.__class__, self).clean()
 
     def get_network(self):
         """
 
     def get_network(self):
         """
index e871118..c20fe5e 100644 (file)
@@ -83,16 +83,20 @@ class OpenStackProject(OpenStackIdentityObject):
         """
         if self.__project:
             # Delete security group 'default' if exists
         """
         if self.__project:
             # Delete security group 'default' if exists
-            neutron = neutron_utils.neutron_client(self._os_creds)
-            default_sec_grp = neutron_utils.get_security_group(
-                neutron, self._keystone, sec_grp_name='default',
-                project_name=self.__project.name)
-            if default_sec_grp:
-                try:
-                    neutron_utils.delete_security_group(
-                        neutron, default_sec_grp)
-                except:
-                    pass
+            neutron = neutron_utils.neutron_client(
+                self._os_creds, self._os_session)
+            try:
+                default_sec_grp = neutron_utils.get_security_group(
+                    neutron, self._keystone, sec_grp_name='default',
+                    project_name=self.__project.name)
+                if default_sec_grp:
+                    try:
+                        neutron_utils.delete_security_group(
+                            neutron, default_sec_grp)
+                    except:
+                        pass
+            finally:
+                neutron.httpclient.session.session.close()
 
             # Delete Project
             try:
 
             # Delete Project
             try:
@@ -114,6 +118,8 @@ class OpenStackProject(OpenStackIdentityObject):
         if role:
             keystone_utils.delete_role(self._keystone, role)
 
         if role:
             keystone_utils.delete_role(self._keystone, role)
 
+        super(self.__class__, self).clean()
+
     def get_project(self):
         """
         Returns the OpenStack project object populated on create()
     def get_project(self):
         """
         Returns the OpenStack project object populated on create()
@@ -142,32 +148,48 @@ class OpenStackProject(OpenStackIdentityObject):
         Returns the compute quotas as an instance of the ComputeQuotas class
         :return:
         """
         Returns the compute quotas as an instance of the ComputeQuotas class
         :return:
         """
-        nova = nova_utils.nova_client(self._os_creds)
-        return nova_utils.get_compute_quotas(nova, self.__project.id)
+        nova = nova_utils.nova_client(self._os_creds, self._os_session)
+
+        try:
+            return nova_utils.get_compute_quotas(nova, self.__project.id)
+        finally:
+            nova.client.session.session.close()
 
     def get_network_quotas(self):
         """
         Returns the network quotas as an instance of the NetworkQuotas class
         :return:
         """
 
     def get_network_quotas(self):
         """
         Returns the network quotas as an instance of the NetworkQuotas class
         :return:
         """
-        neutron = neutron_utils.neutron_client(self._os_creds)
-        return neutron_utils.get_network_quotas(neutron, self.__project.id)
+        neutron = neutron_utils.neutron_client(
+            self._os_creds, self._os_session)
+        try:
+            return neutron_utils.get_network_quotas(neutron, self.__project.id)
+        finally:
+            neutron.httpclient.session.session.close()
 
     def update_compute_quotas(self, compute_quotas):
         """
         Updates the compute quotas for this project
         :param compute_quotas: a ComputeQuotas object.
         """
 
     def update_compute_quotas(self, compute_quotas):
         """
         Updates the compute quotas for this project
         :param compute_quotas: a ComputeQuotas object.
         """
-        nova = nova_utils.nova_client(self._os_creds)
-        nova_utils.update_quotas(nova, self.__project.id, compute_quotas)
+        nova = nova_utils.nova_client(self._os_creds, self._os_session)
+        try:
+            nova_utils.update_quotas(nova, self.__project.id, compute_quotas)
+        finally:
+            nova.client.session.session.close()
 
     def update_network_quotas(self, network_quotas):
         """
         Updates the network quotas for this project
         :param network_quotas: a NetworkQuotas object.
         """
 
     def update_network_quotas(self, network_quotas):
         """
         Updates the network quotas for this project
         :param network_quotas: a NetworkQuotas object.
         """
-        neutron = neutron_utils.neutron_client(self._os_creds)
-        neutron_utils.update_quotas(neutron, self.__project.id, network_quotas)
+        neutron = neutron_utils.neutron_client(
+            self._os_creds, self._os_session)
+        try:
+            neutron_utils.update_quotas(
+                neutron, self.__project.id, network_quotas)
+        finally:
+            neutron.httpclient.session.session.close()
 
 
 class ProjectSettings(ProjectConfig):
 
 
 class ProjectSettings(ProjectConfig):
@@ -181,4 +203,4 @@ class ProjectSettings(ProjectConfig):
         from warnings import warn
         warn('Use snaps.config.project.ProjectConfig instead',
              DeprecationWarning)
         from warnings import warn
         warn('Use snaps.config.project.ProjectConfig instead',
              DeprecationWarning)
-        super(self.__class__, self).__init__(**kwargs)
\ No newline at end of file
+        super(self.__class__, self).__init__(**kwargs)
index 44e35a3..7764a57 100644 (file)
@@ -90,6 +90,8 @@ class OpenStackQoS(OpenStackVolumeObject):
 
         self.__qos = None
 
 
         self.__qos = None
 
+        super(self.__class__, self).clean()
+
     def get_qos(self):
         """
         Returns the domain QoS object as it was populated when create() was
     def get_qos(self):
         """
         Returns the domain QoS object as it was populated when create() was
index 50c0b28..4395059 100644 (file)
@@ -43,8 +43,6 @@ class OpenStackRouter(OpenStackNetworkObject):
         if not router_settings:
             raise RouterCreationError('router_settings is required')
 
         if not router_settings:
             raise RouterCreationError('router_settings is required')
 
-        self.__keystone = None
-
         self.router_settings = router_settings
 
         # Attributes instantiated on create()
         self.router_settings = router_settings
 
         # Attributes instantiated on create()
@@ -63,11 +61,9 @@ class OpenStackRouter(OpenStackNetworkObject):
         """
         super(self.__class__, self).initialize()
 
         """
         super(self.__class__, self).initialize()
 
-        self.__keystone = keystone_utils.keystone_client(self._os_creds)
-
         try:
             self.__router = neutron_utils.get_router(
         try:
             self.__router = neutron_utils.get_router(
-                self._neutron, self.__keystone,
+                self._neutron, self._keystone,
                 router_settings=self.router_settings,
                 project_name=self._os_creds.project_name)
         except Unauthorized as e:
                 router_settings=self.router_settings,
                 project_name=self._os_creds.project_name)
         except Unauthorized as e:
@@ -86,7 +82,7 @@ class OpenStackRouter(OpenStackNetworkObject):
 
             for port_setting in self.router_settings.port_settings:
                 port = neutron_utils.get_port(
 
             for port_setting in self.router_settings.port_settings:
                 port = neutron_utils.get_port(
-                    self._neutron, self.__keystone, port_settings=port_setting,
+                    self._neutron, self._keystone, port_settings=port_setting,
                     project_name=self._os_creds.project_name)
                 if port:
                     self.__ports.append(port)
                     project_name=self._os_creds.project_name)
                 if port:
                     self.__ports.append(port)
@@ -121,7 +117,7 @@ class OpenStackRouter(OpenStackNetworkObject):
 
             for port_setting in self.router_settings.port_settings:
                 port = neutron_utils.get_port(
 
             for port_setting in self.router_settings.port_settings:
                 port = neutron_utils.get_port(
-                    self._neutron, self.__keystone, port_settings=port_setting,
+                    self._neutron, self._keystone, port_settings=port_setting,
                     project_name=self._os_creds.project_name)
                 logger.info(
                     'Retrieved port %s for router - %s', port_setting.name,
                     project_name=self._os_creds.project_name)
                 logger.info(
                     'Retrieved port %s for router - %s', port_setting.name,
@@ -184,6 +180,8 @@ class OpenStackRouter(OpenStackNetworkObject):
                 pass
             self.__router = None
 
                 pass
             self.__router = None
 
+        super(self.__class__, self).clean()
+
     def get_router(self):
         """
         Returns the OpenStack router object
     def get_router(self):
         """
         Returns the OpenStack router object
index eecf789..490f419 100644 (file)
@@ -20,7 +20,6 @@ from neutronclient.common.exceptions import NotFound, Conflict
 from snaps.config.security_group import (
     SecurityGroupConfig, SecurityGroupRuleConfig)
 from snaps.openstack.openstack_creator import OpenStackNetworkObject
 from snaps.config.security_group import (
     SecurityGroupConfig, SecurityGroupRuleConfig)
 from snaps.openstack.openstack_creator import OpenStackNetworkObject
-from snaps.openstack.utils import keystone_utils
 from snaps.openstack.utils import neutron_utils
 
 __author__ = 'spisarski'
 from snaps.openstack.utils import neutron_utils
 
 __author__ = 'spisarski'
@@ -56,9 +55,9 @@ class OpenStackSecurityGroup(OpenStackNetworkObject):
         """
         super(self.__class__, self).initialize()
 
         """
         super(self.__class__, self).initialize()
 
-        keystone = keystone_utils.keystone_client(self._os_creds)
         self.__security_group = neutron_utils.get_security_group(
         self.__security_group = neutron_utils.get_security_group(
-            self._neutron, keystone, sec_grp_settings=self.sec_grp_settings,
+            self._neutron, self._keystone,
+            sec_grp_settings=self.sec_grp_settings,
             project_name=self._os_creds.project_name)
         if self.__security_group:
             # Populate rules
             project_name=self._os_creds.project_name)
         if self.__security_group:
             # Populate rules
@@ -86,9 +85,8 @@ class OpenStackSecurityGroup(OpenStackNetworkObject):
             logger.info(
                 'Creating security group %s...' % self.sec_grp_settings.name)
 
             logger.info(
                 'Creating security group %s...' % self.sec_grp_settings.name)
 
-            keystone = keystone_utils.keystone_client(self._os_creds)
             self.__security_group = neutron_utils.create_security_group(
             self.__security_group = neutron_utils.create_security_group(
-                self._neutron, keystone, self.sec_grp_settings)
+                self._neutron, self._keystone, self.sec_grp_settings)
 
             # Get the rules added for free
             auto_rules = neutron_utils.get_rules_by_security_group(
 
             # Get the rules added for free
             auto_rules = neutron_utils.get_rules_by_security_group(
@@ -104,7 +102,7 @@ class OpenStackSecurityGroup(OpenStackNetworkObject):
             for sec_grp_rule_setting in self.sec_grp_settings.rule_settings:
                 try:
                     custom_rule = neutron_utils.create_security_group_rule(
             for sec_grp_rule_setting in self.sec_grp_settings.rule_settings:
                 try:
                     custom_rule = neutron_utils.create_security_group_rule(
-                        self._neutron, keystone, sec_grp_rule_setting,
+                        self._neutron, self._keystone, sec_grp_rule_setting,
                         self._os_creds.project_name)
                     self.__rules[sec_grp_rule_setting] = custom_rule
                 except Conflict as e:
                         self._os_creds.project_name)
                     self.__rules[sec_grp_rule_setting] = custom_rule
                 except Conflict as e:
@@ -161,6 +159,8 @@ class OpenStackSecurityGroup(OpenStackNetworkObject):
 
             self.__security_group = None
 
 
             self.__security_group = None
 
+        super(self.__class__, self).clean()
+
     def get_security_group(self):
         """
         Returns the OpenStack security group object
     def get_security_group(self):
         """
         Returns the OpenStack security group object
@@ -181,9 +181,9 @@ class OpenStackSecurityGroup(OpenStackNetworkObject):
         :param rule_setting: the rule configuration
         """
         rule_setting.sec_grp_name = self.sec_grp_settings.name
         :param rule_setting: the rule configuration
         """
         rule_setting.sec_grp_name = self.sec_grp_settings.name
-        keystone = keystone_utils.keystone_client(self._os_creds)
         new_rule = neutron_utils.create_security_group_rule(
         new_rule = neutron_utils.create_security_group_rule(
-            self._neutron, keystone, rule_setting, self._os_creds.project_name)
+            self._neutron, self._keystone, rule_setting,
+            self._os_creds.project_name)
         self.__rules[rule_setting] = new_rule
         self.sec_grp_settings.rule_settings.append(rule_setting)
 
         self.__rules[rule_setting] = new_rule
         self.sec_grp_settings.rule_settings.append(rule_setting)
 
index aff10b7..12ce602 100644 (file)
@@ -29,7 +29,7 @@ from snaps.openstack.create_volume import OpenStackVolume
 from snaps.openstack.create_volume_type import OpenStackVolumeType
 from snaps.openstack.openstack_creator import OpenStackCloudObject
 from snaps.openstack.utils import (
 from snaps.openstack.create_volume_type import OpenStackVolumeType
 from snaps.openstack.openstack_creator import OpenStackCloudObject
 from snaps.openstack.utils import (
-    nova_utils, settings_utils, glance_utils, cinder_utils, keystone_utils)
+    nova_utils, settings_utils, glance_utils, cinder_utils)
 
 from snaps.openstack.create_network import OpenStackNetwork
 from snaps.openstack.utils import heat_utils, neutron_utils
 
 from snaps.openstack.create_network import OpenStackNetwork
 from snaps.openstack.utils import heat_utils, neutron_utils
@@ -73,12 +73,28 @@ class OpenStackHeatStack(OpenStackCloudObject, object):
         self.__stack = None
         self.__heat_cli = None
 
         self.__stack = None
         self.__heat_cli = None
 
+        self.__neutron = None
+        self.__nova = None
+        self.__glance = None
+        self.__cinder = None
+
     def initialize(self):
         """
         Loads the existing heat stack
         :return: The Stack domain object or None
         """
     def initialize(self):
         """
         Loads the existing heat stack
         :return: The Stack domain object or None
         """
-        self.__heat_cli = heat_utils.heat_client(self._os_creds)
+        super(self.__class__, self).initialize()
+
+        self.__neutron = neutron_utils.neutron_client(
+            self._os_creds, self._os_session)
+        self.__nova = nova_utils.nova_client(self._os_creds, self._os_session)
+        self.__glance = glance_utils.glance_client(
+            self._os_creds, self._os_session)
+        self.__cinder = cinder_utils.cinder_client(
+            self._os_creds, self._os_session)
+
+        self.__heat_cli = heat_utils.heat_client(
+            self._os_creds, self._os_session)
         self.__stack = heat_utils.get_stack(
             self.__heat_cli, stack_settings=self.stack_settings)
         if self.__stack:
         self.__stack = heat_utils.get_stack(
             self.__heat_cli, stack_settings=self.stack_settings)
         if self.__stack:
@@ -152,6 +168,13 @@ class OpenStackHeatStack(OpenStackCloudObject, object):
 
             self.__stack = None
 
 
             self.__stack = None
 
+        self.__neutron.httpclient.session.session.close()
+        self.__nova.client.session.session.close()
+        self.__glance.http_client.session.session.close()
+        self.__cinder.client.session.session.close()
+
+        super(self.__class__, self).clean()
+
     def get_stack(self):
         """
         Returns the domain Stack object as it was populated when create() was
     def get_stack(self):
         """
         Returns the domain Stack object as it was populated when create() was
@@ -219,15 +242,13 @@ class OpenStackHeatStack(OpenStackCloudObject, object):
         :return: list() of OpenStackNetwork objects
         """
 
         :return: list() of OpenStackNetwork objects
         """
 
-        neutron = neutron_utils.neutron_client(self._os_creds)
-
         out = list()
         stack_networks = heat_utils.get_stack_networks(
         out = list()
         stack_networks = heat_utils.get_stack_networks(
-            self.__heat_cli, neutron, self.__stack)
+            self.__heat_cli, self.__neutron, self.__stack)
 
         for stack_network in stack_networks:
             net_settings = settings_utils.create_network_config(
 
         for stack_network in stack_networks:
             net_settings = settings_utils.create_network_config(
-                neutron, stack_network)
+                self.__neutron, stack_network)
             net_creator = OpenStackNetwork(self._os_creds, net_settings)
             out.append(net_creator)
             net_creator.initialize()
             net_creator = OpenStackNetwork(self._os_creds, net_settings)
             out.append(net_creator)
             net_creator.initialize()
@@ -241,15 +262,13 @@ class OpenStackHeatStack(OpenStackCloudObject, object):
         :return: list() of OpenStackNetwork objects
         """
 
         :return: list() of OpenStackNetwork objects
         """
 
-        neutron = neutron_utils.neutron_client(self._os_creds)
-
         out = list()
         stack_security_groups = heat_utils.get_stack_security_groups(
         out = list()
         stack_security_groups = heat_utils.get_stack_security_groups(
-            self.__heat_cli, neutron, self.__stack)
+            self.__heat_cli, self.__neutron, self.__stack)
 
         for stack_security_group in stack_security_groups:
             settings = settings_utils.create_security_group_config(
 
         for stack_security_group in stack_security_groups:
             settings = settings_utils.create_security_group_config(
-                neutron, stack_security_group)
+                self.__neutron, stack_security_group)
             creator = OpenStackSecurityGroup(self._os_creds, settings)
             out.append(creator)
             creator.initialize()
             creator = OpenStackSecurityGroup(self._os_creds, settings)
             out.append(creator)
             creator.initialize()
@@ -263,15 +282,13 @@ class OpenStackHeatStack(OpenStackCloudObject, object):
         :return: list() of OpenStackRouter objects
         """
 
         :return: list() of OpenStackRouter objects
         """
 
-        neutron = neutron_utils.neutron_client(self._os_creds)
-
         out = list()
         stack_routers = heat_utils.get_stack_routers(
         out = list()
         stack_routers = heat_utils.get_stack_routers(
-            self.__heat_cli, neutron, self.__stack)
+            self.__heat_cli, self.__neutron, self.__stack)
 
         for routers in stack_routers:
             settings = settings_utils.create_router_config(
 
         for routers in stack_routers:
             settings = settings_utils.create_router_config(
-                neutron, routers)
+                self.__neutron, routers)
             creator = OpenStackRouter(self._os_creds, settings)
             out.append(creator)
             creator.initialize()
             creator = OpenStackRouter(self._os_creds, settings)
             out.append(creator)
             creator.initialize()
@@ -287,21 +304,16 @@ class OpenStackHeatStack(OpenStackCloudObject, object):
 
         out = list()
 
 
         out = list()
 
-        nova = nova_utils.nova_client(self._os_creds)
-        keystone = keystone_utils.keystone_client(self._os_creds)
-        neutron = neutron_utils.neutron_client(self._os_creds)
         stack_servers = heat_utils.get_stack_servers(
         stack_servers = heat_utils.get_stack_servers(
-            self.__heat_cli, nova, neutron, keystone, self.__stack,
-            self._os_creds.project_name)
-
-        glance = glance_utils.glance_client(self._os_creds)
+            self.__heat_cli, self.__nova, self.__neutron, self._keystone,
+            self.__stack, self._os_creds.project_name)
 
         for stack_server in stack_servers:
             vm_inst_settings = settings_utils.create_vm_inst_config(
 
         for stack_server in stack_servers:
             vm_inst_settings = settings_utils.create_vm_inst_config(
-                nova, keystone, neutron, stack_server,
+                self.__nova, self._keystone, self.__neutron, stack_server,
                 self._os_creds.project_name)
             image_settings = settings_utils.determine_image_config(
                 self._os_creds.project_name)
             image_settings = settings_utils.determine_image_config(
-                glance, stack_server, self.image_settings)
+                self.__glance, stack_server, self.image_settings)
             keypair_settings = settings_utils.determine_keypair_config(
                 self.__heat_cli, self.__stack, stack_server,
                 keypair_settings=self.keypair_settings,
             keypair_settings = settings_utils.determine_keypair_config(
                 self.__heat_cli, self.__stack, stack_server,
                 keypair_settings=self.keypair_settings,
@@ -322,10 +334,8 @@ class OpenStackHeatStack(OpenStackCloudObject, object):
         """
 
         out = list()
         """
 
         out = list()
-        cinder = cinder_utils.cinder_client(self._os_creds)
-
         volumes = heat_utils.get_stack_volumes(
         volumes = heat_utils.get_stack_volumes(
-            self.__heat_cli, cinder, self.__stack)
+            self.__heat_cli, self.__cinder, self.__stack)
 
         for volume in volumes:
             settings = settings_utils.create_volume_config(volume)
 
         for volume in volumes:
             settings = settings_utils.create_volume_config(volume)
@@ -348,10 +358,8 @@ class OpenStackHeatStack(OpenStackCloudObject, object):
         """
 
         out = list()
         """
 
         out = list()
-        cinder = cinder_utils.cinder_client(self._os_creds)
-
         vol_types = heat_utils.get_stack_volume_types(
         vol_types = heat_utils.get_stack_volume_types(
-            self.__heat_cli, cinder, self.__stack)
+            self.__heat_cli, self.__cinder, self.__stack)
 
         for volume in vol_types:
             settings = settings_utils.create_volume_type_config(volume)
 
         for volume in vol_types:
             settings = settings_utils.create_volume_type_config(volume)
@@ -375,10 +383,9 @@ class OpenStackHeatStack(OpenStackCloudObject, object):
         """
 
         out = list()
         """
 
         out = list()
-        nova = nova_utils.nova_client(self._os_creds)
 
         keypairs = heat_utils.get_stack_keypairs(
 
         keypairs = heat_utils.get_stack_keypairs(
-            self.__heat_cli, nova, self.__stack)
+            self.__heat_cli, self.__nova, self.__stack)
 
         for keypair in keypairs:
             settings = settings_utils.create_keypair_config(
 
         for keypair in keypairs:
             settings = settings_utils.create_keypair_config(
@@ -403,10 +410,9 @@ class OpenStackHeatStack(OpenStackCloudObject, object):
         """
 
         out = list()
         """
 
         out = list()
-        nova = nova_utils.nova_client(self._os_creds)
 
         flavors = heat_utils.get_stack_flavors(
 
         flavors = heat_utils.get_stack_flavors(
-            self.__heat_cli, nova, self.__stack)
+            self.__heat_cli, self.__nova, self.__stack)
 
         for flavor in flavors:
             settings = settings_utils.create_flavor_config(flavor)
 
         for flavor in flavors:
             settings = settings_utils.create_flavor_config(flavor)
index aefebe4..b187f4e 100644 (file)
@@ -77,6 +77,8 @@ class OpenStackUser(OpenStackIdentityObject):
                 pass
             self.__user = None
 
                 pass
             self.__user = None
 
+        super(self.__class__, self).clean()
+
     def get_user(self):
         """
         Returns the OpenStack user object populated in create()
     def get_user(self):
         """
         Returns the OpenStack user object populated in create()
index 656df80..b35cd89 100644 (file)
@@ -20,7 +20,7 @@ from cinderclient.exceptions import NotFound
 
 from snaps.config.volume import VolumeConfig
 from snaps.openstack.openstack_creator import OpenStackVolumeObject
 
 from snaps.config.volume import VolumeConfig
 from snaps.openstack.openstack_creator import OpenStackVolumeObject
-from snaps.openstack.utils import cinder_utils, keystone_utils
+from snaps.openstack.utils import cinder_utils
 
 __author__ = 'spisarski'
 
 
 __author__ = 'spisarski'
 
@@ -51,7 +51,6 @@ class OpenStackVolume(OpenStackVolumeObject):
 
         self.volume_settings = volume_settings
         self.__volume = None
 
         self.volume_settings = volume_settings
         self.__volume = None
-        self.__keystone = None
 
     def initialize(self):
         """
 
     def initialize(self):
         """
@@ -60,9 +59,8 @@ class OpenStackVolume(OpenStackVolumeObject):
         """
         super(self.__class__, self).initialize()
 
         """
         super(self.__class__, self).initialize()
 
-        self.__keystone = keystone_utils.keystone_client(self._os_creds)
         self.__volume = cinder_utils.get_volume(
         self.__volume = cinder_utils.get_volume(
-            self._cinder, self.__keystone,
+            self._cinder, self._keystone,
             volume_settings=self.volume_settings,
             project_name=self._os_creds.project_name)
         return self.__volume
             volume_settings=self.volume_settings,
             project_name=self._os_creds.project_name)
         return self.__volume
@@ -77,7 +75,7 @@ class OpenStackVolume(OpenStackVolumeObject):
 
         if not self.__volume:
             self.__volume = cinder_utils.create_volume(
 
         if not self.__volume:
             self.__volume = cinder_utils.create_volume(
-                self._cinder, self.__keystone, self.volume_settings)
+                self._cinder, self._keystone, self.volume_settings)
 
             logger.info(
                 'Created volume with name - %s', self.volume_settings.name)
 
             logger.info(
                 'Created volume with name - %s', self.volume_settings.name)
@@ -128,6 +126,8 @@ class OpenStackVolume(OpenStackVolumeObject):
 
         self.__volume = None
 
 
         self.__volume = None
 
+        super(self.__class__, self).clean()
+
     def get_volume(self):
         """
         Returns the domain Volume object as it was populated when create() was
     def get_volume(self):
         """
         Returns the domain Volume object as it was populated when create() was
index a7198d8..9a45561 100644 (file)
@@ -87,6 +87,8 @@ class OpenStackVolumeType(OpenStackVolumeObject):
 
         self.__volume_type = None
 
 
         self.__volume_type = None
 
+        super(self.__class__, self).clean()
+
     def get_volume_type(self):
         """
         Returns the domain Volume object as it was populated when create() was
     def get_volume_type(self):
         """
         Returns the domain Volume object as it was populated when create() was
index cf741f3..9bd099b 100644 (file)
@@ -30,15 +30,20 @@ class OpenStackCloudObject(CloudObject):
         :param os_creds: the OpenStack credentials object
         """
         self._os_creds = os_creds
         :param os_creds: the OpenStack credentials object
         """
         self._os_creds = os_creds
+        self._os_session = None
+        self._keystone = None
 
     def initialize(self):
 
     def initialize(self):
-        raise NotImplementedError('Do not override abstract method')
+        self._os_session = keystone_utils.keystone_session(self._os_creds)
+        self._keystone = keystone_utils.keystone_client(
+            self._os_creds, session=self._os_session)
 
     def create(self):
         raise NotImplementedError('Do not override abstract method')
 
     def clean(self):
 
     def create(self):
         raise NotImplementedError('Do not override abstract method')
 
     def clean(self):
-        raise NotImplementedError('Do not override abstract method')
+        if self._os_session:
+            keystone_utils.close_session(self._os_session)
 
 
 class OpenStackComputeObject(OpenStackCloudObject):
 
 
 class OpenStackComputeObject(OpenStackCloudObject):
@@ -55,14 +60,12 @@ class OpenStackComputeObject(OpenStackCloudObject):
         self._nova = None
 
     def initialize(self):
         self._nova = None
 
     def initialize(self):
-        self._nova = nova_utils.nova_client(self._os_creds)
+        super(OpenStackComputeObject, self).initialize()
+        self._nova = nova_utils.nova_client(self._os_creds, self._os_session)
 
     def create(self):
         raise NotImplementedError('Do not override abstract method')
 
 
     def create(self):
         raise NotImplementedError('Do not override abstract method')
 
-    def clean(self):
-        raise NotImplementedError('Do not override abstract method')
-
 
 class OpenStackNetworkObject(OpenStackCloudObject):
     """
 
 class OpenStackNetworkObject(OpenStackCloudObject):
     """
@@ -78,14 +81,13 @@ class OpenStackNetworkObject(OpenStackCloudObject):
         self._neutron = None
 
     def initialize(self):
         self._neutron = None
 
     def initialize(self):
-        self._neutron = neutron_utils.neutron_client(self._os_creds)
+        super(OpenStackNetworkObject, self).initialize()
+        self._neutron = neutron_utils.neutron_client(
+            self._os_creds, self._os_session)
 
     def create(self):
         raise NotImplementedError('Do not override abstract method')
 
 
     def create(self):
         raise NotImplementedError('Do not override abstract method')
 
-    def clean(self):
-        raise NotImplementedError('Do not override abstract method')
-
 
 class OpenStackIdentityObject(OpenStackCloudObject):
     """
 
 class OpenStackIdentityObject(OpenStackCloudObject):
     """
@@ -98,17 +100,13 @@ class OpenStackIdentityObject(OpenStackCloudObject):
         :param os_creds: the OpenStack credentials object
         """
         super(OpenStackIdentityObject, self).__init__(os_creds)
         :param os_creds: the OpenStack credentials object
         """
         super(OpenStackIdentityObject, self).__init__(os_creds)
-        self._keystone = None
 
     def initialize(self):
 
     def initialize(self):
-        self._keystone = keystone_utils.keystone_client(self._os_creds)
+        super(OpenStackIdentityObject, self).initialize()
 
     def create(self):
         raise NotImplementedError('Do not override abstract method')
 
 
     def create(self):
         raise NotImplementedError('Do not override abstract method')
 
-    def clean(self):
-        raise NotImplementedError('Do not override abstract method')
-
 
 class OpenStackVolumeObject(OpenStackCloudObject):
     """
 
 class OpenStackVolumeObject(OpenStackCloudObject):
     """
@@ -124,14 +122,13 @@ class OpenStackVolumeObject(OpenStackCloudObject):
         self._cinder = None
 
     def initialize(self):
         self._cinder = None
 
     def initialize(self):
-        self._cinder = cinder_utils.cinder_client(self._os_creds)
+        super(OpenStackVolumeObject, self).initialize()
+        self._cinder = cinder_utils.cinder_client(
+            self._os_creds, self._os_session)
 
     def create(self):
         raise NotImplementedError('Do not override abstract method')
 
 
     def create(self):
         raise NotImplementedError('Do not override abstract method')
 
-    def clean(self):
-        raise NotImplementedError('Do not override abstract method')
-
 
 class OpenStackMagnumObject(OpenStackCloudObject):
     """
 
 class OpenStackMagnumObject(OpenStackCloudObject):
     """
@@ -147,10 +144,9 @@ class OpenStackMagnumObject(OpenStackCloudObject):
         self._magnum = None
 
     def initialize(self):
         self._magnum = None
 
     def initialize(self):
-        self._magnum = magnum_utils.magnum_client(self._os_creds)
+        super(OpenStackMagnumObject, self).initialize()
+        self._magnum = magnum_utils.magnum_client(
+            self._os_creds, self._os_session)
 
     def create(self):
         raise NotImplementedError('Do not override abstract method')
 
     def create(self):
         raise NotImplementedError('Do not override abstract method')
-
-    def clean(self):
-        raise NotImplementedError('Do not override abstract method')
index 355467d..b08f260 100644 (file)
@@ -54,7 +54,8 @@ class CreateClusterTemplateTests(OSIntegrationTestCase):
 
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.cluster_type_name = self.guid + '-cluster-type'
 
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.cluster_type_name = self.guid + '-cluster-type'
-        self.magnum = magnum_utils.magnum_client(self.os_creds)
+        self.magnum = magnum_utils.magnum_client(
+            self.os_creds, self.os_session)
 
         metadata = self.image_metadata
         if not metadata:
 
         metadata = self.image_metadata
         if not metadata:
index f84355d..453509b 100644 (file)
@@ -274,7 +274,7 @@ class CreateFlavorTests(OSComponentTestCase):
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.flavor_name = guid + 'name'
 
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.flavor_name = guid + 'name'
 
-        self.nova = nova_utils.nova_client(self.os_creds)
+        self.nova = nova_utils.nova_client(self.os_creds, self.os_session)
 
         # Initialize for cleanup
         self.flavor_creator = None
 
         # Initialize for cleanup
         self.flavor_creator = None
@@ -286,6 +286,8 @@ class CreateFlavorTests(OSComponentTestCase):
         if self.flavor_creator:
             self.flavor_creator.clean()
 
         if self.flavor_creator:
             self.flavor_creator.clean()
 
+        super(self.__class__, self).__clean__()
+
     def test_create_flavor(self):
         """
         Tests the creation of an OpenStack flavor.
     def test_create_flavor(self):
         """
         Tests the creation of an OpenStack flavor.
index 9965f87..ae59a67 100644 (file)
@@ -265,7 +265,8 @@ class CreateImageSuccessTests(OSIntegrationTestCase):
 
         guid = uuid.uuid4()
         self.image_name = self.__class__.__name__ + '-' + str(guid)
 
         guid = uuid.uuid4()
         self.image_name = self.__class__.__name__ + '-' + str(guid)
-        self.glance = glance_utils.glance_client(self.os_creds)
+        self.glance = glance_utils.glance_client(
+            self.os_creds, self.os_session)
         self.image_creator = None
 
         if self.image_metadata and 'glance_tests' in self.image_metadata:
         self.image_creator = None
 
         if self.image_metadata and 'glance_tests' in self.image_metadata:
@@ -379,8 +380,8 @@ class CreateImageSuccessTests(OSIntegrationTestCase):
         clean() does not raise an Exception.
         """
         # Create Image
         clean() does not raise an Exception.
         """
         # Create Image
-        self.image_creator = create_image.OpenStackImage(self.os_creds,
-                                                         self.image_settings)
+        self.image_creator = create_image.OpenStackImage(
+            self.os_creds, self.image_settings)
         created_image = self.image_creator.create()
         self.assertIsNotNone(created_image)
 
         created_image = self.image_creator.create()
         self.assertIsNotNone(created_image)
 
@@ -562,7 +563,8 @@ class CreateMultiPartImageTests(OSIntegrationTestCase):
         guid = uuid.uuid4()
         self.image_creators = list()
         self.image_name = self.__class__.__name__ + '-' + str(guid)
         guid = uuid.uuid4()
         self.image_creators = list()
         self.image_name = self.__class__.__name__ + '-' + str(guid)
-        self.glance = glance_utils.glance_client(self.os_creds)
+        self.glance = glance_utils.glance_client(
+            self.os_creds, self.os_session)
 
         self.tmp_dir = 'tmp/' + str(guid)
         if not os.path.exists(self.tmp_dir):
 
         self.tmp_dir = 'tmp/' + str(guid)
         if not os.path.exists(self.tmp_dir):
index 12ae10b..6005f98 100644 (file)
@@ -50,6 +50,7 @@ from snaps.openstack.tests.os_source_file_test import (
     OSIntegrationTestCase, OSComponentTestCase)
 from snaps.openstack.utils import nova_utils, keystone_utils, neutron_utils
 from snaps.openstack.utils.nova_utils import RebootType
     OSIntegrationTestCase, OSComponentTestCase)
 from snaps.openstack.utils import nova_utils, keystone_utils, neutron_utils
 from snaps.openstack.utils.nova_utils import RebootType
+from snaps.openstack.utils import nova_utils, settings_utils, neutron_utils
 
 __author__ = 'spisarski'
 
 
 __author__ = 'spisarski'
 
@@ -293,7 +294,7 @@ class SimpleHealthCheck(OSIntegrationTestCase):
         """
         super(self.__class__, self).__start__()
 
         """
         super(self.__class__, self).__start__()
 
-        self.nova = nova_utils.nova_client(self.os_creds)
+        self.nova = nova_utils.nova_client(self.os_creds, self.os_session)
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.vm_inst_name = guid + '-inst'
         self.port_1_name = guid + 'port-1'
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.vm_inst_name = guid + '-inst'
         self.port_1_name = guid + 'port-1'
@@ -512,9 +513,10 @@ class CreateInstanceSimpleTests(OSIntegrationTestCase):
             self.image_creator.image_settings)
 
         vm_inst = self.inst_creator.create(block=True)
             self.image_creator.image_settings)
 
         vm_inst = self.inst_creator.create(block=True)
-        self.assertIsNotNone(nova_utils.get_server(
+        vm_inst_get = nova_utils.get_server(
             self.nova, self.neutron, self.keystone,
             self.nova, self.neutron, self.keystone,
-            vm_inst_settings=instance_settings))
+            vm_inst_settings=instance_settings)
+        self.assertEqual(vm_inst, vm_inst_get)
 
         self.assertIsNotNone(self.inst_creator.get_vm_inst().availability_zone)
         self.assertIsNone(self.inst_creator.get_vm_inst().compute_host)
 
         self.assertIsNotNone(self.inst_creator.get_vm_inst().availability_zone)
         self.assertIsNone(self.inst_creator.get_vm_inst().compute_host)
@@ -590,7 +592,7 @@ class CreateInstanceSingleNetworkTests(OSIntegrationTestCase):
         """
         super(self.__class__, self).__start__()
 
         """
         super(self.__class__, self).__start__()
 
-        self.nova = nova_utils.nova_client(self.os_creds)
+        self.nova = nova_utils.nova_client(self.os_creds, self.os_session)
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.keypair_priv_filepath = 'tmp/' + guid
         self.keypair_pub_filepath = self.keypair_priv_filepath + '.pub'
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.keypair_priv_filepath = 'tmp/' + guid
         self.keypair_pub_filepath = self.keypair_priv_filepath + '.pub'
@@ -1016,7 +1018,7 @@ class CreateInstanceIPv6NetworkTests(OSIntegrationTestCase):
         """
         super(self.__class__, self).__start__()
 
         """
         super(self.__class__, self).__start__()
 
-        self.nova = nova_utils.nova_client(self.os_creds)
+        self.nova = nova_utils.nova_client(self.os_creds, self.os_session)
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.keypair_priv_filepath = 'tmp/' + self.guid
         self.keypair_pub_filepath = self.keypair_priv_filepath + '.pub'
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.keypair_priv_filepath = 'tmp/' + self.guid
         self.keypair_pub_filepath = self.keypair_priv_filepath + '.pub'
@@ -1621,7 +1623,8 @@ class CreateInstanceOnComputeHost(OSIntegrationTestCase):
         Tests the creation of OpenStack VM instances to each compute node.
         """
         from snaps.openstack.utils import nova_utils
         Tests the creation of OpenStack VM instances to each compute node.
         """
         from snaps.openstack.utils import nova_utils
-        nova = nova_utils.nova_client(self.admin_os_creds)
+        nova = nova_utils.nova_client(
+            self.admin_os_creds, self.admin_os_session)
         zone_hosts = nova_utils.get_availability_zone_hosts(nova)
 
         # Create Instance on each server/zone
         zone_hosts = nova_utils.get_availability_zone_hosts(nova)
 
         # Create Instance on each server/zone
@@ -1675,7 +1678,7 @@ class InstanceSecurityGroupTests(OSIntegrationTestCase):
 
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.vm_inst_name = self.guid + '-inst'
 
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.vm_inst_name = self.guid + '-inst'
-        self.nova = nova_utils.nova_client(self.os_creds)
+        self.nova = nova_utils.nova_client(self.os_creds, self.os_session)
         os_image_settings = openstack_tests.cirros_image_settings(
             name=self.guid + '-image', image_metadata=self.image_metadata)
 
         os_image_settings = openstack_tests.cirros_image_settings(
             name=self.guid + '-image', image_metadata=self.image_metadata)
 
@@ -2006,7 +2009,7 @@ class CreateInstanceFromThreePartImage(OSIntegrationTestCase):
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.image_name = guid
         self.vm_inst_name = guid + '-inst'
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.image_name = guid
         self.vm_inst_name = guid + '-inst'
-        self.nova = nova_utils.nova_client(self.os_creds)
+        self.nova = nova_utils.nova_client(self.os_creds, self.os_session)
 
         net_config = openstack_tests.get_priv_net_config(
             net_name=guid + '-pub-net', subnet_name=guid + '-pub-subnet',
 
         net_config = openstack_tests.get_priv_net_config(
             net_name=guid + '-pub-net', subnet_name=guid + '-pub-subnet',
@@ -2216,6 +2219,8 @@ class CreateInstanceMockOfflineTests(OSComponentTestCase):
         if os.path.exists(self.tmpDir) and os.path.isdir(self.tmpDir):
             shutil.rmtree(self.tmpDir)
 
         if os.path.exists(self.tmpDir) and os.path.isdir(self.tmpDir):
             shutil.rmtree(self.tmpDir)
 
+        super(self.__class__, self).__clean__()
+
     def test_inst_from_file_image_simple_flat(self):
         """
         Creates a VM instance from a locally sourced file image using simply
     def test_inst_from_file_image_simple_flat(self):
         """
         Creates a VM instance from a locally sourced file image using simply
@@ -2636,7 +2641,7 @@ class CreateInstanceTwoNetTests(OSIntegrationTestCase):
         self.ip1 = '10.200.201.5'
         self.ip2 = '10.200.202.5'
 
         self.ip1 = '10.200.201.5'
         self.ip2 = '10.200.202.5'
 
-        self.nova = nova_utils.nova_client(self.os_creds)
+        self.nova = nova_utils.nova_client(self.os_creds, self.os_session)
 
         # Initialize for tearDown()
         self.image_creator = None
 
         # Initialize for tearDown()
         self.image_creator = None
@@ -2858,8 +2863,10 @@ class CreateInstanceVolumeTests(OSIntegrationTestCase):
 
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.vm_inst_name = guid + '-inst'
 
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.vm_inst_name = guid + '-inst'
-        self.nova = nova_utils.nova_client(self.os_creds)
-        self.neutron = neutron_utils.neutron_client(self.os_creds)
+        self.nova = nova_utils.nova_client(
+            self.os_creds, self.os_session)
+        self.neutron = neutron_utils.neutron_client(
+            self.os_creds, self.os_session)
         os_image_settings = openstack_tests.cirros_image_settings(
             name=guid + '-image', image_metadata=self.image_metadata)
 
         os_image_settings = openstack_tests.cirros_image_settings(
             name=guid + '-image', image_metadata=self.image_metadata)
 
index 63e0bcc..44214d0 100644 (file)
@@ -200,7 +200,7 @@ class CreateKeypairsTests(OSIntegrationTestCase):
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.priv_file_path = 'tmp/' + guid
         self.pub_file_path = self.priv_file_path + '.pub'
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.priv_file_path = 'tmp/' + guid
         self.pub_file_path = self.priv_file_path + '.pub'
-        self.nova = nova_utils.nova_client(self.os_creds)
+        self.nova = nova_utils.nova_client(self.os_creds, self.os_session)
         self.keypair_name = guid
 
         self.keypair_creator = None
         self.keypair_name = guid
 
         self.keypair_creator = None
@@ -370,7 +370,7 @@ class CreateKeypairsCleanupTests(OSIntegrationTestCase):
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.priv_file_path = 'tmp/' + guid
         self.pub_file_path = self.priv_file_path + '.pub'
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.priv_file_path = 'tmp/' + guid
         self.pub_file_path = self.priv_file_path + '.pub'
-        self.nova = nova_utils.nova_client(self.os_creds)
+        self.nova = nova_utils.nova_client(self.os_creds, self.os_session)
         self.keypair_name = guid
 
         self.keypair_creator = None
         self.keypair_name = guid
 
         self.keypair_creator = None
index a863a05..d326889 100644 (file)
@@ -369,7 +369,8 @@ class CreateNetworkSuccessTests(OSIntegrationTestCase):
             router_name=guid + '-pub-router', external_net=self.ext_net_name,
             netconf_override=self.netconf_override)
 
             router_name=guid + '-pub-router', external_net=self.ext_net_name,
             netconf_override=self.netconf_override)
 
-        self.neutron = neutron_utils.neutron_client(self.os_creds)
+        self.neutron = neutron_utils.neutron_client(
+            self.os_creds, self.os_session)
 
         # Initialize for cleanup
         self.net_creator = None
 
         # Initialize for cleanup
         self.net_creator = None
@@ -576,7 +577,8 @@ class CreateNetworkGatewayTests(OSIntegrationTestCase):
 
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
 
 
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
 
-        self.neutron = neutron_utils.neutron_client(self.os_creds)
+        self.neutron = neutron_utils.neutron_client(
+            self.os_creds, self.os_session)
 
         self.ip_prfx = '10.1.0.'
 
 
         self.ip_prfx = '10.1.0.'
 
@@ -708,7 +710,8 @@ class CreateNetworkIPv6Tests(OSIntegrationTestCase):
         super(self.__class__, self).__start__()
 
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         super(self.__class__, self).__start__()
 
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
-        self.neutron = neutron_utils.neutron_client(self.os_creds)
+        self.neutron = neutron_utils.neutron_client(
+            self.os_creds, self.os_session)
 
         # Initialize for cleanup
         self.net_creator = None
 
         # Initialize for cleanup
         self.net_creator = None
@@ -811,8 +814,10 @@ class CreateNetworkTypeTests(OSComponentTestCase):
         self.net_config = openstack_tests.get_pub_net_config(
             net_name=guid + '-pub-net', subnet_name=guid + '-pub-subnet')
 
         self.net_config = openstack_tests.get_pub_net_config(
             net_name=guid + '-pub-net', subnet_name=guid + '-pub-subnet')
 
-        self.neutron = neutron_utils.neutron_client(self.os_creds)
-        self.keystone = keystone_utils.keystone_client(self.os_creds)
+        self.neutron = neutron_utils.neutron_client(
+            self.os_creds, self.os_session)
+        self.keystone = keystone_utils.keystone_client(
+            self.os_creds, self.os_session)
 
         # Initialize for cleanup
         self.net_creator = None
 
         # Initialize for cleanup
         self.net_creator = None
@@ -824,6 +829,8 @@ class CreateNetworkTypeTests(OSComponentTestCase):
         if self.net_creator:
             self.net_creator.clean()
 
         if self.net_creator:
             self.net_creator.clean()
 
+        super(self.__class__, self).__clean__()
+
     def test_create_network_type_vlan(self):
         """
         Tests the creation of an OpenStack network of type vlan.
     def test_create_network_type_vlan(self):
         """
         Tests the creation of an OpenStack network of type vlan.
@@ -954,7 +961,8 @@ class CreateMultipleNetworkTests(OSIntegrationTestCase):
         self.net_config = openstack_tests.get_pub_net_config(
             net_name=guid + '-pub-net', subnet_name=guid + '-pub-subnet')
 
         self.net_config = openstack_tests.get_pub_net_config(
             net_name=guid + '-pub-net', subnet_name=guid + '-pub-subnet')
 
-        self.neutron = neutron_utils.neutron_client(self.os_creds)
+        self.neutron = neutron_utils.neutron_client(
+            self.os_creds, self.os_session)
 
         # Initialize for cleanup
         self.admin_net_creator = None
 
         # Initialize for cleanup
         self.admin_net_creator = None
index 2c10311..41e58fc 100644 (file)
@@ -99,7 +99,8 @@ class CreateProjectSuccessTests(OSComponentTestCase):
             name=guid + '-name',
             domain=self.os_creds.project_domain_name)
 
             name=guid + '-name',
             domain=self.os_creds.project_domain_name)
 
-        self.keystone = keystone_utils.keystone_client(self.os_creds)
+        self.keystone = keystone_utils.keystone_client(
+            self.os_creds, self.os_session)
 
         # Initialize for cleanup
         self.project_creator = None
 
         # Initialize for cleanup
         self.project_creator = None
@@ -111,6 +112,8 @@ class CreateProjectSuccessTests(OSComponentTestCase):
         if self.project_creator:
             self.project_creator.clean()
 
         if self.project_creator:
             self.project_creator.clean()
 
+        super(self.__class__, self).__clean__()
+
     def test_create_project_bad_domain(self):
         """
         Tests the creation of an OpenStack project with an invalid domain
     def test_create_project_bad_domain(self):
         """
         Tests the creation of an OpenStack project with an invalid domain
@@ -214,12 +217,12 @@ class CreateProjectSuccessTests(OSComponentTestCase):
         self.assertEqual(update_network_quotas,
                          self.project_creator.get_network_quotas())
 
         self.assertEqual(update_network_quotas,
                          self.project_creator.get_network_quotas())
 
-        nova = nova_utils.nova_client(self.os_creds)
+        nova = nova_utils.nova_client(self.os_creds, self.os_session)
         new_compute_quotas = nova_utils.get_compute_quotas(
             nova, self.project_creator.get_project().id)
         self.assertEqual(update_compute_quotas, new_compute_quotas)
 
         new_compute_quotas = nova_utils.get_compute_quotas(
             nova, self.project_creator.get_project().id)
         self.assertEqual(update_compute_quotas, new_compute_quotas)
 
-        neutron = neutron_utils.neutron_client(self.os_creds)
+        neutron = neutron_utils.neutron_client(self.os_creds, self.os_session)
         new_network_quotas = neutron_utils.get_network_quotas(
             neutron, self.project_creator.get_project().id)
         self.assertEqual(update_network_quotas, new_network_quotas)
         new_network_quotas = neutron_utils.get_network_quotas(
             neutron, self.project_creator.get_project().id)
         self.assertEqual(update_network_quotas, new_network_quotas)
@@ -241,7 +244,8 @@ class CreateProjectUserTests(OSComponentTestCase):
             name=self.guid + '-name',
             domain=self.os_creds.project_domain_name)
 
             name=self.guid + '-name',
             domain=self.os_creds.project_domain_name)
 
-        self.keystone = keystone_utils.keystone_client(self.os_creds)
+        self.keystone = keystone_utils.keystone_client(
+            self.os_creds, self.os_session)
 
         # Initialize for cleanup
         self.project_creator = None
 
         # Initialize for cleanup
         self.project_creator = None
@@ -262,6 +266,8 @@ class CreateProjectUserTests(OSComponentTestCase):
         if self.project_creator:
             self.project_creator.clean()
 
         if self.project_creator:
             self.project_creator.clean()
 
+        super(self.__class__, self).__clean__()
+
     def test_create_project_sec_grp_one_user(self):
         """
         Tests the creation of an OpenStack object to a project with a new users
     def test_create_project_sec_grp_one_user(self):
         """
         Tests the creation of an OpenStack object to a project with a new users
index 1d7fbd0..b3d7979 100644 (file)
@@ -126,7 +126,8 @@ class CreateQoSTests(OSIntegrationTestCase):
             name=self.__class__.__name__ + '-' + str(guid),
             consumer=Consumer.both)
 
             name=self.__class__.__name__ + '-' + str(guid),
             consumer=Consumer.both)
 
-        self.cinder = cinder_utils.cinder_client(self.admin_os_creds)
+        self.cinder = cinder_utils.cinder_client(
+            self.admin_os_creds, self.admin_os_session)
         self.qos_creator = create_qos.OpenStackQoS(
             self.admin_os_creds, qos_settings)
 
         self.qos_creator = create_qos.OpenStackQoS(
             self.admin_os_creds, qos_settings)
 
index d605916..439d9e3 100644 (file)
@@ -130,7 +130,8 @@ class CreateRouterSuccessTests(OSIntegrationTestCase):
         self.router_creator = None
         self.network_creator1 = None
         self.network_creator2 = None
         self.router_creator = None
         self.network_creator1 = None
         self.network_creator2 = None
-        self.neutron = neutron_utils.neutron_client(self.os_creds)
+        self.neutron = neutron_utils.neutron_client(
+            self.os_creds, self.os_session)
 
     def tearDown(self):
         """
 
     def tearDown(self):
         """
@@ -515,7 +516,8 @@ class CreateMultipleRouterTests(OSIntegrationTestCase):
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.admin_router_creator = None
         self.proj_router_creator = None
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.admin_router_creator = None
         self.proj_router_creator = None
-        self.neutron = neutron_utils.neutron_client(self.os_creds)
+        self.neutron = neutron_utils.neutron_client(
+            self.os_creds, self.os_session)
 
         network_settings = NetworkConfig(
             name=self.guid + '-pub-net', shared=True,
 
         network_settings = NetworkConfig(
             name=self.guid + '-pub-net', shared=True,
@@ -623,7 +625,8 @@ class CreateRouterSecurityGroupTests(OSIntegrationTestCase):
             self.os_creds, SecurityGroupConfig(name=self.guid + '-sec_grp'))
         self.sec_grp_creator.create()
 
             self.os_creds, SecurityGroupConfig(name=self.guid + '-sec_grp'))
         self.sec_grp_creator.create()
 
-        self.neutron = neutron_utils.neutron_client(self.os_creds)
+        self.neutron = neutron_utils.neutron_client(
+            self.os_creds, self.os_session)
 
     def tearDown(self):
         """
 
     def tearDown(self):
         """
index 6f0fdec..dc632b7 100644 (file)
@@ -210,7 +210,8 @@ class CreateSecurityGroupTests(OSIntegrationTestCase):
 
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.sec_grp_name = guid + 'name'
 
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.sec_grp_name = guid + 'name'
-        self.neutron = neutron_utils.neutron_client(self.os_creds)
+        self.neutron = neutron_utils.neutron_client(
+            self.os_creds, self.os_session)
 
         # Initialize for cleanup
         self.sec_grp_creator = None
 
         # Initialize for cleanup
         self.sec_grp_creator = None
@@ -697,7 +698,8 @@ class CreateMultipleSecurityGroupTests(OSIntegrationTestCase):
 
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.sec_grp_name = guid + 'name'
 
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.sec_grp_name = guid + 'name'
-        self.neutron = neutron_utils.neutron_client(self.os_creds)
+        self.neutron = neutron_utils.neutron_client(
+            self.os_creds, self.os_session)
 
         # Initialize for cleanup
         self.admin_sec_grp_config = SecurityGroupConfig(
 
         # Initialize for cleanup
         self.admin_sec_grp_config = SecurityGroupConfig(
index ad8ac31..f728211 100644 (file)
@@ -139,7 +139,7 @@ class CreateStackSuccessTests(OSIntegrationTestCase):
 
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
 
 
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
 
-        self.heat_cli = heat_utils.heat_client(self.os_creds)
+        self.heat_cli = heat_utils.heat_client(self.os_creds, self.os_session)
         self.stack_creator = None
 
         self.image_creator = OpenStackImage(
         self.stack_creator = None
 
         self.image_creator = OpenStackImage(
@@ -351,8 +351,10 @@ class CreateStackSuccessTests(OSIntegrationTestCase):
 
         # Need to use 'admin' creds as heat creates objects under it's own
         # project/tenant
 
         # Need to use 'admin' creds as heat creates objects under it's own
         # project/tenant
-        neutron = neutron_utils.neutron_client(self.os_creds)
-        keystone = keystone_utils.keystone_client(self.os_creds)
+        neutron = neutron_utils.neutron_client(
+            self.os_creds, self.os_session)
+        keystone = keystone_utils.keystone_client(
+            self.os_creds, self.os_session)
         net_by_name = neutron_utils.get_network(
             neutron, keystone, network_name=net_creators[0].get_network().name)
         self.assertEqual(net_creators[0].get_network(), net_by_name)
         net_by_name = neutron_utils.get_network(
             neutron, keystone, network_name=net_creators[0].get_network().name)
         self.assertEqual(net_creators[0].get_network(), net_by_name)
@@ -389,9 +391,9 @@ class CreateStackSuccessTests(OSIntegrationTestCase):
         self.assertEqual(self.vm_inst_name,
                          vm_inst_creators[0].get_vm_inst().name)
 
         self.assertEqual(self.vm_inst_name,
                          vm_inst_creators[0].get_vm_inst().name)
 
-        nova = nova_utils.nova_client(self.os_creds)
-        neutron = neutron_utils.neutron_client(self.os_creds)
-        keystone = keystone_utils.keystone_client(self.os_creds)
+        nova = nova_utils.nova_client(self.os_creds, self.os_session)
+        neutron = neutron_utils.neutron_client(self.os_creds, self.os_session)
+        keystone = keystone_utils.keystone_client(self.os_creds, self.os_session)
         vm_inst_by_name = nova_utils.get_server(
             nova, neutron, keystone,
             server_name=vm_inst_creators[0].get_vm_inst().name)
         vm_inst_by_name = nova_utils.get_server(
             nova, neutron, keystone,
             server_name=vm_inst_creators[0].get_vm_inst().name)
@@ -414,7 +416,7 @@ class CreateStackFloatingIpTests(OSIntegrationTestCase):
 
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
 
 
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
 
-        self.heat_cli = heat_utils.heat_client(self.os_creds)
+        self.heat_cli = heat_utils.heat_client(self.os_creds, self.os_session)
         self.stack_creator = None
 
         self.image_creator = OpenStackImage(
         self.stack_creator = None
 
         self.image_creator = OpenStackImage(
@@ -521,7 +523,7 @@ class CreateStackNestedResourceTests(OSIntegrationTestCase):
 
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
 
 
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
 
-        self.heat_cli = heat_utils.heat_client(self.os_creds)
+        self.heat_cli = heat_utils.heat_client(self.os_creds, self.os_session)
         self.stack_creator = None
 
         self.image_creator = OpenStackImage(
         self.stack_creator = None
 
         self.image_creator = OpenStackImage(
@@ -632,8 +634,9 @@ class CreateStackRouterTests(OSIntegrationTestCase):
 
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
 
 
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
 
-        self.heat_cli = heat_utils.heat_client(self.os_creds)
-        self.neutron = neutron_utils.neutron_client(self.os_creds)
+        self.heat_cli = heat_utils.heat_client(self.os_creds, self.os_session)
+        self.neutron = neutron_utils.neutron_client(
+            self.os_creds, self.os_session)
         self.stack_creator = None
 
         self.net_name = self.guid + '-net'
         self.stack_creator = None
 
         self.net_name = self.guid + '-net'
@@ -702,7 +705,7 @@ class CreateStackVolumeTests(OSIntegrationTestCase):
 
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
 
 
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
 
-        self.heat_cli = heat_utils.heat_client(self.os_creds)
+        self.heat_cli = heat_utils.heat_client(self.os_creds, self.os_session)
         self.stack_creator = None
 
         self.volume_name = self.guid + '-volume'
         self.stack_creator = None
 
         self.volume_name = self.guid + '-volume'
@@ -796,7 +799,7 @@ class CreateStackFlavorTests(OSIntegrationTestCase):
 
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
 
 
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
 
-        self.heat_cli = heat_utils.heat_client(self.os_creds)
+        self.heat_cli = heat_utils.heat_client(self.os_creds, self.os_session)
         self.stack_creator = None
 
         self.heat_tmplt_path = pkg_resources.resource_filename(
         self.stack_creator = None
 
         self.heat_tmplt_path = pkg_resources.resource_filename(
@@ -855,8 +858,8 @@ class CreateStackKeypairTests(OSIntegrationTestCase):
 
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
 
 
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
 
-        self.heat_cli = heat_utils.heat_client(self.os_creds)
-        self.nova = nova_utils.nova_client(self.os_creds)
+        self.heat_cli = heat_utils.heat_client(self.os_creds, self.os_session)
+        self.nova = nova_utils.nova_client(self.os_creds, self.os_session)
         self.stack_creator = None
 
         self.keypair_name = self.guid + '-kp'
         self.stack_creator = None
 
         self.keypair_name = self.guid + '-kp'
@@ -939,8 +942,8 @@ class CreateStackSecurityGroupTests(OSIntegrationTestCase):
 
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
 
 
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
 
-        self.heat_cli = heat_utils.heat_client(self.os_creds)
-        self.nova = nova_utils.nova_client(self.os_creds)
+        self.heat_cli = heat_utils.heat_client(self.os_creds, self.os_session)
+        self.nova = nova_utils.nova_client(self.os_creds, self.os_session)
         self.stack_creator = None
 
         self.security_group_name = self.guid + '-sec-grp'
         self.stack_creator = None
 
         self.security_group_name = self.guid + '-sec-grp'
@@ -1034,6 +1037,7 @@ class CreateStackNegativeTests(OSIntegrationTestCase):
     def tearDown(self):
         if self.stack_creator:
             self.stack_creator.clean()
     def tearDown(self):
         if self.stack_creator:
             self.stack_creator.clean()
+
         super(self.__class__, self).__clean__()
 
     def test_missing_dependencies(self):
         super(self.__class__, self).__clean__()
 
     def test_missing_dependencies(self):
@@ -1073,7 +1077,7 @@ class CreateStackFailureTests(OSIntegrationTestCase):
 
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
 
 
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
 
-        self.heat_cli = heat_utils.heat_client(self.os_creds)
+        self.heat_cli = heat_utils.heat_client(self.os_creds, self.os_session)
         self.stack_creator = None
 
         self.tmp_file = file_utils.save_string_to_file(
         self.stack_creator = None
 
         self.tmp_file = file_utils.save_string_to_file(
index d3eb4a6..718d5a3 100644 (file)
@@ -109,7 +109,7 @@ class CreateUserSuccessTests(OSComponentTestCase):
             roles={'admin': self.os_creds.project_name},
             domain_name=self.os_creds.user_domain_name)
 
             roles={'admin': self.os_creds.project_name},
             domain_name=self.os_creds.user_domain_name)
 
-        self.keystone = keystone_utils.keystone_client(self.os_creds)
+        self.keystone = keystone_utils.keystone_client(self.os_creds, self.os_session)
 
         # Initialize for cleanup
         self.user_creator = None
 
         # Initialize for cleanup
         self.user_creator = None
@@ -121,6 +121,8 @@ class CreateUserSuccessTests(OSComponentTestCase):
         if self.user_creator:
             self.user_creator.clean()
 
         if self.user_creator:
             self.user_creator.clean()
 
+        super(self.__class__, self).__clean__()
+
     def test_create_user(self):
         """
         Tests the creation of an OpenStack user.
     def test_create_user(self):
         """
         Tests the creation of an OpenStack user.
index cf90b6e..4392245 100644 (file)
@@ -129,8 +129,10 @@ class CreateSimpleVolumeSuccessTests(OSIntegrationTestCase):
         self.volume_settings = VolumeConfig(
             name=self.__class__.__name__ + '-' + str(guid))
 
         self.volume_settings = VolumeConfig(
             name=self.__class__.__name__ + '-' + str(guid))
 
-        self.cinder = cinder_utils.cinder_client(self.os_creds)
-        self.keystone = keystone_utils.keystone_client(self.os_creds)
+        self.cinder = cinder_utils.cinder_client(
+            self.os_creds, self.os_session)
+        self.keystone = keystone_utils.keystone_client(
+            self.os_creds, self.os_session)
         self.volume_creator = None
 
     def tearDown(self):
         self.volume_creator = None
 
     def tearDown(self):
@@ -223,7 +225,8 @@ class CreateSimpleVolumeFailureTests(OSIntegrationTestCase):
         super(self.__class__, self).__start__()
 
         self.guid = uuid.uuid4()
         super(self.__class__, self).__start__()
 
         self.guid = uuid.uuid4()
-        self.cinder = cinder_utils.cinder_client(self.os_creds)
+        self.cinder = cinder_utils.cinder_client(
+            self.os_creds, self.os_session)
         self.volume_creator = None
 
     def tearDown(self):
         self.volume_creator = None
 
     def tearDown(self):
@@ -353,7 +356,8 @@ class CreateVolumeWithImageTests(OSIntegrationTestCase):
     def setUp(self):
         super(self.__class__, self).__start__()
 
     def setUp(self):
         super(self.__class__, self).__start__()
 
-        self.cinder = cinder_utils.cinder_client(self.os_creds)
+        self.cinder = cinder_utils.cinder_client(
+            self.os_creds, self.os_session)
 
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.volume_name = guid + '-vol'
 
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.volume_name = guid + '-vol'
@@ -465,12 +469,14 @@ class CreateVolMultipleCredsTests(OSIntegrationTestCase):
         admin_vol = self.volume_creators[0].create(block=True)
         self.assertIsNotNone(admin_vol)
 
         admin_vol = self.volume_creators[0].create(block=True)
         self.assertIsNotNone(admin_vol)
 
-        admin_key = keystone_utils.keystone_client(self.admin_os_creds)
+        admin_key = keystone_utils.keystone_client(
+            self.admin_os_creds, self.admin_os_session)
         admin_proj = keystone_utils.get_project(
             admin_key, project_name=self.admin_os_creds.project_name)
         self.assertEqual(admin_vol.project_id, admin_proj.id)
 
         admin_proj = keystone_utils.get_project(
             admin_key, project_name=self.admin_os_creds.project_name)
         self.assertEqual(admin_vol.project_id, admin_proj.id)
 
-        admin_cinder = cinder_utils.cinder_client(self.admin_os_creds)
+        admin_cinder = cinder_utils.cinder_client(
+            self.admin_os_creds, self.admin_os_session)
         admin_vol_get = cinder_utils.get_volume(
             admin_cinder, admin_key, volume_name=vol_name,
             project_name=self.admin_os_creds.project_name)
         admin_vol_get = cinder_utils.get_volume(
             admin_cinder, admin_key, volume_name=vol_name,
             project_name=self.admin_os_creds.project_name)
@@ -484,8 +490,10 @@ class CreateVolMultipleCredsTests(OSIntegrationTestCase):
 
         self.assertNotEqual(admin_vol, proj_vol)
 
 
         self.assertNotEqual(admin_vol, proj_vol)
 
-        proj_key = keystone_utils.keystone_client(self.os_creds)
-        proj_cinder = cinder_utils.cinder_client(self.os_creds)
+        proj_key = keystone_utils.keystone_client(
+            self.os_creds, self.os_session)
+        proj_cinder = cinder_utils.cinder_client(
+            self.os_creds, self.os_session)
         proj_vol_get = cinder_utils.get_volume(
             proj_cinder, proj_key, volume_name=vol_name,
             project_name=self.os_creds.project_name)
         proj_vol_get = cinder_utils.get_volume(
             proj_cinder, proj_key, volume_name=vol_name,
             project_name=self.os_creds.project_name)
index 5e78ee9..b797274 100644 (file)
@@ -127,7 +127,8 @@ class CreateSimpleVolumeTypeSuccessTests(OSIntegrationTestCase):
         self.volume_type_settings = VolumeTypeConfig(
             name=self.__class__.__name__ + '-' + str(guid))
 
         self.volume_type_settings = VolumeTypeConfig(
             name=self.__class__.__name__ + '-' + str(guid))
 
-        self.cinder = cinder_utils.cinder_client(self.admin_os_creds)
+        self.cinder = cinder_utils.cinder_client(
+            self.admin_os_creds, self.admin_os_session)
         self.volume_type_creator = OpenStackVolumeType(
             self.admin_os_creds, self.volume_type_settings)
 
         self.volume_type_creator = OpenStackVolumeType(
             self.admin_os_creds, self.volume_type_settings)
 
@@ -211,7 +212,8 @@ class CreateVolumeTypeComplexTests(OSIntegrationTestCase):
     def setUp(self):
         super(self.__class__, self).__start__()
 
     def setUp(self):
         super(self.__class__, self).__start__()
 
-        self.cinder = cinder_utils.cinder_client(self.admin_os_creds)
+        self.cinder = cinder_utils.cinder_client(
+            self.admin_os_creds, self.admin_os_session)
 
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
 
 
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
 
index b361ea8..51b9400 100644 (file)
@@ -53,6 +53,7 @@ class OSComponentTestCase(unittest.TestCase):
             self.os_creds = openstack_tests.get_credentials(
                 dev_os_env_file=dev_os_env_file)
 
             self.os_creds = openstack_tests.get_credentials(
                 dev_os_env_file=dev_os_env_file)
 
+        self.os_session = keystone_utils.keystone_session(self.os_creds)
         self.ext_net_name = ext_net_name
 
         if not self.ext_net_name and file_utils.file_exists(dev_os_env_file):
         self.ext_net_name = ext_net_name
 
         if not self.ext_net_name and file_utils.file_exists(dev_os_env_file):
@@ -76,6 +77,14 @@ class OSComponentTestCase(unittest.TestCase):
         return suite
 
 
         return suite
 
 
+    def __clean__(self):
+        """
+        Cleans up keystone session.
+        """
+        if self.os_session:
+            keystone_utils.close_session(self.os_session)
+
+
 class OSIntegrationTestCase(OSComponentTestCase):
 
     def __init__(self, method_name='runTest', os_creds=None, ext_net_name=None,
 class OSIntegrationTestCase(OSComponentTestCase):
 
     def __init__(self, method_name='runTest', os_creds=None, ext_net_name=None,
@@ -144,9 +153,13 @@ class OSIntegrationTestCase(OSComponentTestCase):
         self.project_creator = None
         self.user_creator = None
         self.admin_os_creds = self.os_creds
         self.project_creator = None
         self.user_creator = None
         self.admin_os_creds = self.os_creds
+        self.admin_os_session = self.os_session
+        keystone_utils.keystone_session(
+            self.admin_os_creds)
 
         if self.use_keystone:
 
         if self.use_keystone:
-            self.keystone = keystone_utils.keystone_client(self.admin_os_creds)
+            self.keystone = keystone_utils.keystone_client(
+                self.admin_os_creds, self.admin_os_session)
             guid = self.__class__.__name__ + '-' + str(uuid.uuid4())[:-19]
             project_name = guid + '-proj'
             self.project_creator = deploy_utils.create_project(
             guid = self.__class__.__name__ + '-' + str(uuid.uuid4())[:-19]
             project_name = guid + '-proj'
             self.project_creator = deploy_utils.create_project(
@@ -168,6 +181,7 @@ class OSIntegrationTestCase(OSComponentTestCase):
 
             self.os_creds = self.user_creator.get_os_creds(
                 self.project_creator.project_settings.name)
 
             self.os_creds = self.user_creator.get_os_creds(
                 self.project_creator.project_settings.name)
+            self.os_session = keystone_utils.keystone_session(self.os_creds)
 
             # add user to project
             self.project_creator.assoc_user(self.user_creator.get_user())
 
             # add user to project
             self.project_creator.assoc_user(self.user_creator.get_user())
@@ -184,3 +198,9 @@ class OSIntegrationTestCase(OSComponentTestCase):
 
         if self.user_creator:
             self.user_creator.clean()
 
         if self.user_creator:
             self.user_creator.clean()
+
+        if self.admin_os_session:
+            keystone_utils.close_session(self.admin_os_session)
+
+        super(OSIntegrationTestCase, self).__clean__()
+
index 246245e..61abe22 100644 (file)
@@ -33,13 +33,18 @@ Utilities for basic neutron API calls
 """
 
 
 """
 
 
-def cinder_client(os_creds):
+def cinder_client(os_creds, session=None):
     """
     Creates and returns a cinder client object
     """
     Creates and returns a cinder client object
+    :param os_creds: the credentials for connecting to the OpenStack remote API
+    :param session: the keystone session object (optional)
     :return: the cinder client
     """
     :return: the cinder client
     """
+    if not session:
+        session = keystone_utils.keystone_session(os_creds)
+
     return Client(version=os_creds.volume_api_version,
     return Client(version=os_creds.volume_api_version,
-                  session=keystone_utils.keystone_session(os_creds),
+                  session=session,
                   region_name=os_creds.region_name)
 
 
                   region_name=os_creds.region_name)
 
 
index a127ad3..db20f2f 100644 (file)
@@ -34,13 +34,18 @@ Utilities for basic neutron API calls
 """
 
 
 """
 
 
-def glance_client(os_creds):
+def glance_client(os_creds, session=None):
     """
     Creates and returns a glance client object
     """
     Creates and returns a glance client object
+    :param os_creds: the credentials for connecting to the OpenStack remote API
+    :param session: the keystone session object (optional)
     :return: the glance client
     """
     :return: the glance client
     """
+    if not session:
+        session = keystone_utils.keystone_session(os_creds)
+
     return Client(version=os_creds.image_api_version,
     return Client(version=os_creds.image_api_version,
-                  session=keystone_utils.keystone_session(os_creds),
+                  session=session,
                   region_name=os_creds.region_name)
 
 
                   region_name=os_creds.region_name)
 
 
index d42eefa..3d62fdf 100644 (file)
@@ -32,15 +32,17 @@ __author__ = 'spisarski'
 logger = logging.getLogger('heat_utils')
 
 
 logger = logging.getLogger('heat_utils')
 
 
-def heat_client(os_creds):
+def heat_client(os_creds, session=None):
     """
     Retrieves the Heat client
     :param os_creds: the OpenStack credentials
     :return: the client
     """
     logger.debug('Retrieving Heat Client')
     """
     Retrieves the Heat client
     :param os_creds: the OpenStack credentials
     :return: the client
     """
     logger.debug('Retrieving Heat Client')
+    if not session:
+        session = keystone_utils.keystone_session(os_creds)
     return Client(os_creds.heat_api_version,
     return Client(os_creds.heat_api_version,
-                  session=keystone_utils.keystone_session(os_creds),
+                  session=session,
                   region_name=os_creds.region_name)
 
 
                   region_name=os_creds.region_name)
 
 
index 263f823..52c86d8 100644 (file)
@@ -14,6 +14,7 @@
 # limitations under the License.
 import logging
 
 # limitations under the License.
 import logging
 
+import keystoneauth1
 from keystoneclient.client import Client
 from keystoneauth1.identity import v3, v2
 from keystoneauth1 import session
 from keystoneclient.client import Client
 from keystoneauth1.identity import v3, v2
 from keystoneauth1 import session
@@ -78,15 +79,29 @@ def keystone_session(os_creds):
                            verify=os_creds.cacert)
 
 
                            verify=os_creds.cacert)
 
 
-def keystone_client(os_creds):
+def close_session(session):
+    """
+    Closes a keystone session
+    :param session: a session.Session object
+    """
+    if isinstance(session, keystoneauth1.session.Session):
+        session.session.close()
+
+
+def keystone_client(os_creds, session=None):
     """
     Returns the keystone client
     :param os_creds: the OpenStack credentials (OSCreds) object
     """
     Returns the keystone client
     :param os_creds: the OpenStack credentials (OSCreds) object
+    :param session: the keystone session object (optional)
     :return: the client
     """
     :return: the client
     """
+
+    if not session:
+        session = keystone_session(os_creds)
+
     return Client(
         version=os_creds.identity_api_version,
     return Client(
         version=os_creds.identity_api_version,
-        session=keystone_session(os_creds),
+        session=session,
         interface=os_creds.interface,
         region_name=os_creds.region_name)
 
         interface=os_creds.interface,
         region_name=os_creds.region_name)
 
index 1899ef6..fd78bd2 100644 (file)
@@ -48,7 +48,7 @@ from snaps.openstack.create_user import OpenStackUser
 from snaps.openstack.create_volume import OpenStackVolume
 from snaps.openstack.create_volume_type import OpenStackVolumeType
 from snaps.openstack.os_credentials import OSCreds, ProxySettings
 from snaps.openstack.create_volume import OpenStackVolume
 from snaps.openstack.create_volume_type import OpenStackVolumeType
 from snaps.openstack.os_credentials import OSCreds, ProxySettings
-from snaps.openstack.utils import deploy_utils, neutron_utils
+from snaps.openstack.utils import deploy_utils, neutron_utils, keystone_utils
 from snaps.provisioning import ansible_utils
 
 logger = logging.getLogger('lanuch_utils')
 from snaps.provisioning import ansible_utils
 
 logger = logging.getLogger('lanuch_utils')
@@ -713,18 +713,22 @@ def __get_router_variable_value(var_config_values, routers_dict, os_creds):
 
     if router_creator:
         if 'external_fixed_ip' == var_config_values.get('attr'):
 
     if router_creator:
         if 'external_fixed_ip' == var_config_values.get('attr'):
-            neutron = neutron_utils.neutron_client(os_creds)
-            ext_nets = neutron_utils.get_external_networks(neutron)
-
-            subnet_name = var_config_values.get('subnet_name')
-
-            for ext_net in ext_nets:
-                for subnet in ext_net.subnets:
-                    if subnet_name == subnet.name:
-                        router = router_creator.get_router()
-                        for fixed_ips in router.external_fixed_ips:
-                            if subnet.id == fixed_ips['subnet_id']:
-                                return fixed_ips['ip_address']
+            session = keystone_utils.keystone_session(os_creds)
+            neutron = neutron_utils.neutron_client(os_creds, session)
+            try:
+                ext_nets = neutron_utils.get_external_networks(neutron)
+
+                subnet_name = var_config_values.get('subnet_name')
+
+                for ext_net in ext_nets:
+                    for subnet in ext_net.subnets:
+                        if subnet_name == subnet.name:
+                            router = router_creator.get_router()
+                            for fixed_ips in router.external_fixed_ips:
+                                if subnet.id == fixed_ips['subnet_id']:
+                                    return fixed_ips['ip_address']
+            finally:
+                keystone_utils.close_session(session)
 
 
 def __get_vm_port_variable_value(var_config_values, vm_dict):
 
 
 def __get_vm_port_variable_value(var_config_values, vm_dict):
index 96ba6d1..1f39cfe 100644 (file)
@@ -24,15 +24,18 @@ __author__ = 'spisarski'
 logger = logging.getLogger('magnum_utils')
 
 
 logger = logging.getLogger('magnum_utils')
 
 
-def magnum_client(os_creds):
+def magnum_client(os_creds, session=None):
     """
     Retrieves the Magnum client
     :param os_creds: the OpenStack credentialsf
     """
     Retrieves the Magnum client
     :param os_creds: the OpenStack credentialsf
+    :param session: the keystone session object (optional)
     :return: the client
     """
     logger.debug('Retrieving Magnum Client')
     :return: the client
     """
     logger.debug('Retrieving Magnum Client')
-    return Client(str(os_creds.magnum_api_version),
-                  session=keystone_utils.keystone_session(os_creds))
+    if not session:
+        session = keystone_utils.keystone_session(os_creds)
+
+    return Client(str(os_creds.magnum_api_version), session=session)
 
 
 def get_cluster_template(magnum, template_config=None, template_name=None):
 
 
 def get_cluster_template(magnum, template_config=None, template_name=None):
index 8685d14..03e24f5 100644 (file)
@@ -33,15 +33,18 @@ Utilities for basic neutron API calls
 """
 
 
 """
 
 
-def neutron_client(os_creds):
+def neutron_client(os_creds, session=None):
     """
     Instantiates and returns a client for communications with OpenStack's
     Neutron server
     :param os_creds: the credentials for connecting to the OpenStack remote API
     """
     Instantiates and returns a client for communications with OpenStack's
     Neutron server
     :param os_creds: the credentials for connecting to the OpenStack remote API
+    :param session: the keystone session object (optional)
     :return: the client object
     """
     :return: the client object
     """
+    if not session:
+        session = keystone_utils.keystone_session(os_creds)
     return Client(api_version=os_creds.network_api_version,
     return Client(api_version=os_creds.network_api_version,
-                  session=keystone_utils.keystone_session(os_creds),
+                  session=session,
                   region_name=os_creds.region_name)
 
 
                   region_name=os_creds.region_name)
 
 
index faa2d75..38460c5 100644 (file)
@@ -42,16 +42,20 @@ Utilities for basic OpenStack Nova API calls
 """
 
 
 """
 
 
-def nova_client(os_creds):
+def nova_client(os_creds, session=None):
     """
     Instantiates and returns a client for communications with OpenStack's Nova
     server
     :param os_creds: The connection credentials to the OpenStack API
     """
     Instantiates and returns a client for communications with OpenStack's Nova
     server
     :param os_creds: The connection credentials to the OpenStack API
+    :param session: the keystone session object (optional)
     :return: the client object
     """
     logger.debug('Retrieving Nova Client')
     :return: the client object
     """
     logger.debug('Retrieving Nova Client')
+    if not session:
+        session = keystone_utils.keystone_session(os_creds)
+
     return Client(os_creds.compute_api_version,
     return Client(os_creds.compute_api_version,
-                  session=keystone_utils.keystone_session(os_creds),
+                  session=session,
                   region_name=os_creds.region_name)
 
 
                   region_name=os_creds.region_name)
 
 
index 3004c0f..073d574 100644 (file)
@@ -43,7 +43,7 @@ class CinderSmokeTests(OSComponentTestCase):
         """
         Tests to ensure that the proper credentials can connect.
         """
         """
         Tests to ensure that the proper credentials can connect.
         """
-        cinder = cinder_utils.cinder_client(self.os_creds)
+        cinder = cinder_utils.cinder_client(self.os_creds, self.os_session)
         volumes = cinder.volumes.list()
         self.assertIsNotNone(volumes)
         self.assertTrue(isinstance(volumes, list))
         volumes = cinder.volumes.list()
         self.assertIsNotNone(volumes)
         self.assertTrue(isinstance(volumes, list))
@@ -74,8 +74,10 @@ class CinderUtilsVolumeTests(OSComponentTestCase):
         guid = uuid.uuid4()
         self.volume_name = self.__class__.__name__ + '-' + str(guid)
         self.volume = None
         guid = uuid.uuid4()
         self.volume_name = self.__class__.__name__ + '-' + str(guid)
         self.volume = None
-        self.cinder = cinder_utils.cinder_client(self.os_creds)
-        self.keystone = keystone_utils.keystone_client(self.os_creds)
+        self.cinder = cinder_utils.cinder_client(
+            self.os_creds, self.os_session)
+        self.keystone = keystone_utils.keystone_client(
+            self.os_creds, self.os_session)
 
     def tearDown(self):
         """
 
     def tearDown(self):
         """
@@ -186,7 +188,8 @@ class CinderUtilsQoSTests(OSComponentTestCase):
         self.qos_name = self.__class__.__name__ + '-' + str(guid)
         self.specs = {'foo': 'bar '}
         self.qos = None
         self.qos_name = self.__class__.__name__ + '-' + str(guid)
         self.specs = {'foo': 'bar '}
         self.qos = None
-        self.cinder = cinder_utils.cinder_client(self.os_creds)
+        self.cinder = cinder_utils.cinder_client(
+            self.os_creds, self.os_session)
 
     def tearDown(self):
         """
 
     def tearDown(self):
         """
@@ -198,6 +201,8 @@ class CinderUtilsQoSTests(OSComponentTestCase):
             except NotFound:
                 pass
 
             except NotFound:
                 pass
 
+        super(self.__class__, self).__clean__()
+
     def test_create_qos_both(self):
         """
         Tests the cinder_utils.create_qos()
     def test_create_qos_both(self):
         """
         Tests the cinder_utils.create_qos()
@@ -283,7 +288,8 @@ class CinderUtilsSimpleVolumeTypeTests(OSComponentTestCase):
         volume_type_name = self.__class__.__name__ + '-' + str(guid)
         self.volume_type_settings = VolumeTypeConfig(name=volume_type_name)
         self.volume_type = None
         volume_type_name = self.__class__.__name__ + '-' + str(guid)
         self.volume_type_settings = VolumeTypeConfig(name=volume_type_name)
         self.volume_type = None
-        self.cinder = cinder_utils.cinder_client(self.os_creds)
+        self.cinder = cinder_utils.cinder_client(
+            self.os_creds, self.os_session)
 
     def tearDown(self):
         """
 
     def tearDown(self):
         """
@@ -295,6 +301,8 @@ class CinderUtilsSimpleVolumeTypeTests(OSComponentTestCase):
             except NotFound:
                 pass
 
             except NotFound:
                 pass
 
+        super(self.__class__, self).__clean__()
+
     def test_create_simple_volume_type(self):
         """
         Tests the cinder_utils.create_volume_type(), get_volume_type(), and
     def test_create_simple_volume_type(self):
         """
         Tests the cinder_utils.create_volume_type(), get_volume_type(), and
@@ -351,7 +359,8 @@ class CinderUtilsAddEncryptionTests(OSComponentTestCase):
         self.encryption_name = self.__class__.__name__ + '-' + str(guid)
         self.encryption = None
 
         self.encryption_name = self.__class__.__name__ + '-' + str(guid)
         self.encryption = None
 
-        self.cinder = cinder_utils.cinder_client(self.os_creds)
+        self.cinder = cinder_utils.cinder_client(
+            self.os_creds, self.os_session)
 
         volume_type_name = self.__class__.__name__ + '-' + str(guid) + '-type'
         self.volume_type = cinder_utils.create_volume_type(
 
         volume_type_name = self.__class__.__name__ + '-' + str(guid) + '-type'
         self.volume_type = cinder_utils.create_volume_type(
@@ -374,6 +383,8 @@ class CinderUtilsAddEncryptionTests(OSComponentTestCase):
             except NotFound:
                 pass
 
             except NotFound:
                 pass
 
+        super(self.__class__, self).__clean__()
+
     def test_create_simple_encryption(self):
         """
         Tests the cinder_utils.create_volume_encryption(),
     def test_create_simple_encryption(self):
         """
         Tests the cinder_utils.create_volume_encryption(),
@@ -468,7 +479,8 @@ class CinderUtilsVolumeTypeCompleteTests(OSComponentTestCase):
         self.qos_name = self.__class__.__name__ + '-' + str(guid) + '-qos'
         self.vol_type_name = self.__class__.__name__ + '-' + str(guid)
         self.specs = {'foo': 'bar'}
         self.qos_name = self.__class__.__name__ + '-' + str(guid) + '-qos'
         self.vol_type_name = self.__class__.__name__ + '-' + str(guid)
         self.specs = {'foo': 'bar'}
-        self.cinder = cinder_utils.cinder_client(self.os_creds)
+        self.cinder = cinder_utils.cinder_client(
+            self.os_creds, self.os_session)
         qos_settings = QoSConfig(
             name=self.qos_name, specs=self.specs, consumer=Consumer.both)
         self.qos = cinder_utils.create_qos(self.cinder, qos_settings)
         qos_settings = QoSConfig(
             name=self.qos_name, specs=self.specs, consumer=Consumer.both)
         self.qos = cinder_utils.create_qos(self.cinder, qos_settings)
@@ -496,6 +508,8 @@ class CinderUtilsVolumeTypeCompleteTests(OSComponentTestCase):
             except NotFound:
                 pass
 
             except NotFound:
                 pass
 
+        super(self.__class__, self).__clean__()
+
     def test_create_with_encryption(self):
         """
         Tests the cinder_utils.create_volume_type() where encryption has been
     def test_create_with_encryption(self):
         """
         Tests the cinder_utils.create_volume_type() where encryption has been
index e61b795..e761ed8 100644 (file)
@@ -39,7 +39,7 @@ class GlanceSmokeTests(OSComponentTestCase):
         """
         Tests to ensure that the proper credentials can connect.
         """
         """
         Tests to ensure that the proper credentials can connect.
         """
-        glance = glance_utils.glance_client(self.os_creds)
+        glance = glance_utils.glance_client(self.os_creds, self.os_session)
         image = glance_utils.get_image(glance, image_name='foo')
         self.assertIsNone(image)
 
         image = glance_utils.get_image(glance, image_name='foo')
         self.assertIsNone(image)
 
@@ -69,7 +69,8 @@ class GlanceUtilsTests(OSComponentTestCase):
         guid = uuid.uuid4()
         self.image_name = self.__class__.__name__ + '-' + str(guid)
         self.image = None
         guid = uuid.uuid4()
         self.image_name = self.__class__.__name__ + '-' + str(guid)
         self.image = None
-        self.glance = glance_utils.glance_client(self.os_creds)
+        self.glance = glance_utils.glance_client(
+            self.os_creds, self.os_session)
         if self.image_metadata:
             self.glance_test_meta = self.image_metadata.get('glance_tests')
         else:
         if self.image_metadata:
             self.glance_test_meta = self.image_metadata.get('glance_tests')
         else:
@@ -89,6 +90,8 @@ class GlanceUtilsTests(OSComponentTestCase):
         if os.path.exists(self.tmp_dir) and os.path.isdir(self.tmp_dir):
             shutil.rmtree(self.tmp_dir)
 
         if os.path.exists(self.tmp_dir) and os.path.isdir(self.tmp_dir):
             shutil.rmtree(self.tmp_dir)
 
+        super(self.__class__, self).__clean__()
+
     def test_create_image_minimal_url(self):
         """
         Tests the glance_utils.create_image() function with a URL unless the
     def test_create_image_minimal_url(self):
         """
         Tests the glance_utils.create_image() function with a URL unless the
index cad3fc2..081736a 100644 (file)
@@ -47,7 +47,7 @@ class HeatSmokeTests(OSComponentTestCase):
         """
         Tests to ensure that the proper credentials can connect.
         """
         """
         Tests to ensure that the proper credentials can connect.
         """
-        heat = heat_utils.heat_client(self.os_creds)
+        heat = heat_utils.heat_client(self.os_creds, self.os_session)
 
         # This should not throw an exception
         stacks = heat.stacks.list()
 
         # This should not throw an exception
         stacks = heat.stacks.list()
@@ -115,7 +115,8 @@ class HeatUtilsCreateSimpleStackTests(OSComponentTestCase):
             env_values=env_values)
         self.stack1 = None
         self.stack2 = None
             env_values=env_values)
         self.stack1 = None
         self.stack2 = None
-        self.heat_client = heat_utils.heat_client(self.os_creds)
+        self.heat_client = heat_utils.heat_client(
+            self.os_creds, self.os_session)
 
     def tearDown(self):
         """
 
     def tearDown(self):
         """
@@ -145,6 +146,8 @@ class HeatUtilsCreateSimpleStackTests(OSComponentTestCase):
             except:
                 pass
 
             except:
                 pass
 
+        super(self.__class__, self).__clean__()
+
     def test_create_stack(self):
         """
         Tests the creation of an OpenStack Heat stack1 that does not exist.
     def test_create_stack(self):
         """
         Tests the creation of an OpenStack Heat stack1 that does not exist.
@@ -174,7 +177,7 @@ class HeatUtilsCreateSimpleStackTests(OSComponentTestCase):
 
         self.assertTrue(stack_active(self.heat_client, self.stack1))
 
 
         self.assertTrue(stack_active(self.heat_client, self.stack1))
 
-        neutron = neutron_utils.neutron_client(self.os_creds)
+        neutron = neutron_utils.neutron_client(self.os_creds, self.os_session)
         networks = heat_utils.get_stack_networks(
             self.heat_client, neutron, self.stack1)
         self.assertIsNotNone(networks)
         networks = heat_utils.get_stack_networks(
             self.heat_client, neutron, self.stack1)
         self.assertIsNotNone(networks)
@@ -185,8 +188,9 @@ class HeatUtilsCreateSimpleStackTests(OSComponentTestCase):
         self.assertEqual(1, len(subnets))
         self.assertEqual(self.subnet_name, subnets[0].name)
 
         self.assertEqual(1, len(subnets))
         self.assertEqual(self.subnet_name, subnets[0].name)
 
-        nova = nova_utils.nova_client(self.os_creds)
-        keystone = keystone_utils.keystone_client(self.os_creds)
+        nova = nova_utils.nova_client(self.os_creds, self.os_session)
+        keystone = keystone_utils.keystone_client(
+            self.os_creds, self.os_session)
         servers = heat_utils.get_stack_servers(
             self.heat_client, nova, neutron, keystone, self.stack1,
             self.os_creds.project_name)
         servers = heat_utils.get_stack_servers(
             self.heat_client, nova, neutron, keystone, self.stack1,
             self.os_creds.project_name)
@@ -277,7 +281,8 @@ class HeatUtilsCreateComplexStackTests(OSComponentTestCase):
         stack_settings = StackConfig(
             name=stack_name, template_path=heat_tmplt_path,
             env_values=env_values)
         stack_settings = StackConfig(
             name=stack_name, template_path=heat_tmplt_path,
             env_values=env_values)
-        self.heat_client = heat_utils.heat_client(self.os_creds)
+        self.heat_client = heat_utils.heat_client(
+            self.os_creds, self.os_session)
         self.stack = heat_utils.create_stack(self.heat_client, stack_settings)
 
         self.assertTrue(stack_active(self.heat_client, self.stack))
         self.stack = heat_utils.create_stack(self.heat_client, stack_settings)
 
         self.assertTrue(stack_active(self.heat_client, self.stack))
@@ -309,10 +314,15 @@ class HeatUtilsCreateComplexStackTests(OSComponentTestCase):
                     time.sleep(3)
 
                 if not is_deleted:
                     time.sleep(3)
 
                 if not is_deleted:
-                    nova = nova_utils.nova_client(self.os_creds)
-                    keystone = keystone_utils.keystone_client(self.os_creds)
-                    neutron = neutron_utils.neutron_client(self.os_creds)
-                    glance = glance_utils.glance_client(self.os_creds)
+                    nova = nova_utils.nova_client(
+                        self.os_creds, self.os_session)
+                    keystone = keystone_utils.keystone_client(
+                        self.os_creds, self.os_session)
+                    neutron = neutron_utils.neutron_client(
+                        self.os_creds, self.os_session)
+                    glance = glance_utils.glance_client(
+                        self.os_creds, self.os_session)
+
                     servers = heat_utils.get_stack_servers(
                         self.heat_client, nova, neutron, keystone, self.stack,
                         self.os_creds.project_name)
                     servers = heat_utils.get_stack_servers(
                         self.heat_client, nova, neutron, keystone, self.stack,
                         self.os_creds.project_name)
@@ -359,6 +369,8 @@ class HeatUtilsCreateComplexStackTests(OSComponentTestCase):
             os.chmod(expanded_path, 0o755)
             os.remove(expanded_path)
 
             os.chmod(expanded_path, 0o755)
             os.remove(expanded_path)
 
+        super(self.__class__, self).__clean__()
+
     def test_get_settings_from_stack(self):
         """
         Tests that a heat template with floating IPs and can have the proper
     def test_get_settings_from_stack(self):
         """
         Tests that a heat template with floating IPs and can have the proper
@@ -372,7 +384,7 @@ class HeatUtilsCreateComplexStackTests(OSComponentTestCase):
         self.assertIsNotNone(options)
         self.assertEqual(1, len(options))
 
         self.assertIsNotNone(options)
         self.assertEqual(1, len(options))
 
-        neutron = neutron_utils.neutron_client(self.os_creds)
+        neutron = neutron_utils.neutron_client(self.os_creds, self.os_session)
         networks = heat_utils.get_stack_networks(
             self.heat_client, neutron, self.stack)
         self.assertIsNotNone(networks)
         networks = heat_utils.get_stack_networks(
             self.heat_client, neutron, self.stack)
         self.assertIsNotNone(networks)
@@ -384,9 +396,10 @@ class HeatUtilsCreateComplexStackTests(OSComponentTestCase):
         self.assertIsNotNone(network_settings)
         self.assertEqual(self.network_name, network_settings.name)
 
         self.assertIsNotNone(network_settings)
         self.assertEqual(self.network_name, network_settings.name)
 
-        nova = nova_utils.nova_client(self.os_creds)
-        glance = glance_utils.glance_client(self.os_creds)
-        keystone = keystone_utils.keystone_client(self.os_creds)
+        nova = nova_utils.nova_client(self.os_creds, self.os_session)
+        glance = glance_utils.glance_client(self.os_creds, self.os_session)
+        keystone = keystone_utils.keystone_client(
+            self.os_creds, self.os_session)
         servers = heat_utils.get_stack_servers(
             self.heat_client, nova, neutron, keystone, self.stack,
             self.os_creds.project_name)
         servers = heat_utils.get_stack_servers(
             self.heat_client, nova, neutron, keystone, self.stack,
             self.os_creds.project_name)
@@ -458,8 +471,10 @@ class HeatUtilsRouterTests(OSComponentTestCase):
             name=stack_name, template_path=heat_tmplt_path,
             env_values=env_values)
         self.stack = None
             name=stack_name, template_path=heat_tmplt_path,
             env_values=env_values)
         self.stack = None
-        self.heat_client = heat_utils.heat_client(self.os_creds)
-        self.neutron = neutron_utils.neutron_client(self.os_creds)
+        self.heat_client = heat_utils.heat_client(
+            self.os_creds, self.os_session)
+        self.neutron = neutron_utils.neutron_client(
+            self.os_creds, self.os_session)
 
     def tearDown(self):
         """
 
     def tearDown(self):
         """
@@ -471,6 +486,8 @@ class HeatUtilsRouterTests(OSComponentTestCase):
             except:
                 pass
 
             except:
                 pass
 
+        super(self.__class__, self).__clean__()
+
     def test_create_router_with_stack(self):
         """
         Tests the creation of an OpenStack router with Heat and the retrieval
     def test_create_router_with_stack(self):
         """
         Tests the creation of an OpenStack router with Heat and the retrieval
@@ -504,7 +521,8 @@ class HeatUtilsRouterTests(OSComponentTestCase):
         router = routers[0]
         self.assertEqual(self.router_name, router.name)
 
         router = routers[0]
         self.assertEqual(self.router_name, router.name)
 
-        keystone = keystone_utils.keystone_client(self.os_creds)
+        keystone = keystone_utils.keystone_client(
+            self.os_creds, self.os_session)
         ext_net = neutron_utils.get_network(
             self.neutron, keystone, network_name=self.ext_net_name)
         self.assertEqual(ext_net.id, router.external_network_id)
         ext_net = neutron_utils.get_network(
             self.neutron, keystone, network_name=self.ext_net_name)
         self.assertEqual(ext_net.id, router.external_network_id)
@@ -534,8 +552,10 @@ class HeatUtilsVolumeTests(OSComponentTestCase):
             name=stack_name, template_path=heat_tmplt_path,
             env_values=env_values)
         self.stack = None
             name=stack_name, template_path=heat_tmplt_path,
             env_values=env_values)
         self.stack = None
-        self.heat_client = heat_utils.heat_client(self.os_creds)
-        self.cinder = cinder_utils.cinder_client(self.os_creds)
+        self.heat_client = heat_utils.heat_client(
+            self.os_creds, self.os_session)
+        self.cinder = cinder_utils.cinder_client(
+            self.os_creds, self.os_session)
 
     def tearDown(self):
         """
 
     def tearDown(self):
         """
@@ -547,6 +567,8 @@ class HeatUtilsVolumeTests(OSComponentTestCase):
             except:
                 pass
 
             except:
                 pass
 
+        super(self.__class__, self).__clean__()
+
     def test_create_vol_with_stack(self):
         """
         Tests the creation of an OpenStack volume with Heat.
     def test_create_vol_with_stack(self):
         """
         Tests the creation of an OpenStack volume with Heat.
@@ -614,8 +636,10 @@ class HeatUtilsFlavorTests(OSComponentTestCase):
         self.stack_settings = StackConfig(
             name=stack_name, template_path=heat_tmplt_path)
         self.stack = None
         self.stack_settings = StackConfig(
             name=stack_name, template_path=heat_tmplt_path)
         self.stack = None
-        self.heat_client = heat_utils.heat_client(self.os_creds)
-        self.nova = nova_utils.nova_client(self.os_creds)
+        self.heat_client = heat_utils.heat_client(
+            self.os_creds, self.os_session)
+        self.nova = nova_utils.nova_client(
+            self.os_creds, self.os_session)
 
     def tearDown(self):
         """
 
     def tearDown(self):
         """
@@ -627,6 +651,8 @@ class HeatUtilsFlavorTests(OSComponentTestCase):
             except:
                 pass
 
             except:
                 pass
 
+        super(self.__class__, self).__clean__()
+
     def test_create_flavor_with_stack(self):
         """
         Tests the creation of an OpenStack volume with Heat.
     def test_create_flavor_with_stack(self):
         """
         Tests the creation of an OpenStack volume with Heat.
@@ -673,8 +699,10 @@ class HeatUtilsKeypairTests(OSComponentTestCase):
             name=stack_name, template_path=heat_tmplt_path,
             env_values=env_values)
         self.stack = None
             name=stack_name, template_path=heat_tmplt_path,
             env_values=env_values)
         self.stack = None
-        self.heat_client = heat_utils.heat_client(self.os_creds)
-        self.nova = nova_utils.nova_client(self.os_creds)
+        self.heat_client = heat_utils.heat_client(
+            self.os_creds, self.os_session)
+        self.nova = nova_utils.nova_client(
+            self.os_creds, self.os_session)
 
     def tearDown(self):
         """
 
     def tearDown(self):
         """
@@ -686,6 +714,8 @@ class HeatUtilsKeypairTests(OSComponentTestCase):
             except:
                 pass
 
             except:
                 pass
 
+        super(self.__class__, self).__clean__()
+
     def test_create_keypair_with_stack(self):
         """
         Tests the creation of an OpenStack keypair with Heat.
     def test_create_keypair_with_stack(self):
         """
         Tests the creation of an OpenStack keypair with Heat.
@@ -736,8 +766,10 @@ class HeatUtilsSecurityGroupTests(OSComponentTestCase):
             name=stack_name, template_path=heat_tmplt_path,
             env_values=env_values)
         self.stack = None
             name=stack_name, template_path=heat_tmplt_path,
             env_values=env_values)
         self.stack = None
-        self.heat_client = heat_utils.heat_client(self.os_creds)
-        self.neutron = neutron_utils.neutron_client(self.os_creds)
+        self.heat_client = heat_utils.heat_client(
+            self.os_creds, self.os_session)
+        self.neutron = neutron_utils.neutron_client(
+            self.os_creds, self.os_session)
 
     def tearDown(self):
         """
 
     def tearDown(self):
         """
@@ -749,6 +781,8 @@ class HeatUtilsSecurityGroupTests(OSComponentTestCase):
             except:
                 pass
 
             except:
                 pass
 
+        super(self.__class__, self).__clean__()
+
     def test_create_security_group_with_stack(self):
         """
         Tests the creation of an OpenStack SecurityGroup with Heat.
     def test_create_security_group_with_stack(self):
         """
         Tests the creation of an OpenStack SecurityGroup with Heat.
index 7ce7a61..cc3a8ad 100644 (file)
@@ -31,7 +31,8 @@ class KeystoneSmokeTests(OSComponentTestCase):
         """
         Tests to ensure that the proper credentials can connect.
         """
         """
         Tests to ensure that the proper credentials can connect.
         """
-        keystone = keystone_utils.keystone_client(self.os_creds)
+        keystone = keystone_utils.keystone_client(
+            self.os_creds, self.os_session)
 
         users = keystone.users.list()
         self.assertIsNotNone(users)
 
         users = keystone.users.list()
         self.assertIsNotNone(users)
@@ -66,14 +67,16 @@ class KeystoneUtilsTests(OSComponentTestCase):
         self.project_name = self.guid + '-projName'
         self.project = None
         self.role = None
         self.project_name = self.guid + '-projName'
         self.project = None
         self.role = None
-        self.keystone = keystone_utils.keystone_client(self.os_creds)
+        self.keystone = keystone_utils.keystone_client(
+            self.os_creds, self.os_session)
 
     def tearDown(self):
         """
         Cleans the remote OpenStack objects
         """
         if self.project:
 
     def tearDown(self):
         """
         Cleans the remote OpenStack objects
         """
         if self.project:
-            neutron = neutron_utils.neutron_client(self.os_creds)
+            neutron = neutron_utils.neutron_client(
+                self.os_creds, self.os_session)
             default_sec_grp = neutron_utils.get_security_group(
                 neutron, self.keystone, sec_grp_name='default',
                 project_name=self.os_creds.project_name)
             default_sec_grp = neutron_utils.get_security_group(
                 neutron, self.keystone, sec_grp_name='default',
                 project_name=self.os_creds.project_name)
@@ -92,6 +95,8 @@ class KeystoneUtilsTests(OSComponentTestCase):
         if self.role:
             keystone_utils.delete_role(self.keystone, self.role)
 
         if self.role:
             keystone_utils.delete_role(self.keystone, self.role)
 
+        super(self.__class__, self).__clean__()
+
     def test_create_user_minimal(self):
         """
         Tests the keystone_utils.create_user() function
     def test_create_user_minimal(self):
         """
         Tests the keystone_utils.create_user() function
index f841c48..d87d97a 100644 (file)
@@ -44,7 +44,8 @@ class MagnumSmokeTests(OSComponentTestCase):
         """
         Tests to ensure that the proper credentials can connect.
         """
         """
         Tests to ensure that the proper credentials can connect.
         """
-        magnum = magnum_utils.magnum_client(self.os_creds)
+        magnum = magnum_utils.magnum_client(
+            self.os_creds, self.os_session)
 
         # This should not throw an exception
         self.assertIsNotNone(magnum.clusters.list())
 
         # This should not throw an exception
         self.assertIsNotNone(magnum.clusters.list())
@@ -70,7 +71,8 @@ class MagnumUtilsClusterTypeTests(OSComponentTestCase):
     def setUp(self):
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.cluster_type_name = self.guid + '-cluster-type'
     def setUp(self):
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.cluster_type_name = self.guid + '-cluster-type'
-        self.magnum = magnum_utils.magnum_client(self.os_creds)
+        self.magnum = magnum_utils.magnum_client(
+            self.os_creds, self.os_session)
 
         metadata = self.image_metadata
         if not metadata:
 
         metadata = self.image_metadata
         if not metadata:
@@ -130,6 +132,8 @@ class MagnumUtilsClusterTypeTests(OSComponentTestCase):
             except:
                 pass
 
             except:
                 pass
 
+        super(self.__class__, self).__clean__()
+
     def test_create_cluster_template_simple(self):
         config = ClusterTemplateConfig(
             name=self.cluster_type_name,
     def test_create_cluster_template_simple(self):
         config = ClusterTemplateConfig(
             name=self.cluster_type_name,
index 2583a96..cd293ca 100644 (file)
@@ -41,7 +41,7 @@ class NeutronSmokeTests(OSComponentTestCase):
         """
         Tests to ensure that the proper credentials can connect.
         """
         """
         Tests to ensure that the proper credentials can connect.
         """
-        neutron = neutron_utils.neutron_client(self.os_creds)
+        neutron = neutron_utils.neutron_client(self.os_creds, self.os_session)
 
         networks = neutron.list_networks()
 
 
         networks = neutron.list_networks()
 
@@ -70,7 +70,7 @@ class NeutronSmokeTests(OSComponentTestCase):
         configured self.ext_net_name is contained within the returned list
         :return:
         """
         configured self.ext_net_name is contained within the returned list
         :return:
         """
-        neutron = neutron_utils.neutron_client(self.os_creds)
+        neutron = neutron_utils.neutron_client(self.os_creds, self.os_session)
         ext_networks = neutron_utils.get_external_networks(neutron)
         found = False
         for network in ext_networks:
         ext_networks = neutron_utils.get_external_networks(neutron)
         found = False
         for network in ext_networks:
@@ -88,8 +88,10 @@ class NeutronUtilsNetworkTests(OSComponentTestCase):
     def setUp(self):
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.port_name = str(guid) + '-port'
     def setUp(self):
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.port_name = str(guid) + '-port'
-        self.neutron = neutron_utils.neutron_client(self.os_creds)
-        self.keystone = keystone_utils.keystone_client(self.os_creds)
+        self.neutron = neutron_utils.neutron_client(
+            self.os_creds, self.os_session)
+        self.keystone = keystone_utils.keystone_client(
+            self.os_creds, self.os_session)
         self.network = None
         self.net_config = openstack_tests.get_pub_net_config(
             net_name=guid + '-pub-net')
         self.network = None
         self.net_config = openstack_tests.get_pub_net_config(
             net_name=guid + '-pub-net')
@@ -101,6 +103,8 @@ class NeutronUtilsNetworkTests(OSComponentTestCase):
         if self.network:
             neutron_utils.delete_network(self.neutron, self.network)
 
         if self.network:
             neutron_utils.delete_network(self.neutron, self.network)
 
+        super(self.__class__, self).__clean__()
+
     def test_create_network(self):
         """
         Tests the neutron_utils.create_network() function
     def test_create_network(self):
         """
         Tests the neutron_utils.create_network() function
@@ -145,8 +149,10 @@ class NeutronUtilsSubnetTests(OSComponentTestCase):
     def setUp(self):
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.port_name = str(guid) + '-port'
     def setUp(self):
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.port_name = str(guid) + '-port'
-        self.neutron = neutron_utils.neutron_client(self.os_creds)
-        self.keystone = keystone_utils.keystone_client(self.os_creds)
+        self.neutron = neutron_utils.neutron_client(
+            self.os_creds, self.os_session)
+        self.keystone = keystone_utils.keystone_client(
+            self.os_creds, self.os_session)
         self.network = None
         self.net_config = openstack_tests.get_pub_net_config(
             net_name=guid + '-pub-net', subnet_name=guid + '-pub-subnet',
         self.network = None
         self.net_config = openstack_tests.get_pub_net_config(
             net_name=guid + '-pub-net', subnet_name=guid + '-pub-subnet',
@@ -162,6 +168,8 @@ class NeutronUtilsSubnetTests(OSComponentTestCase):
             except:
                 pass
 
             except:
                 pass
 
+        super(self.__class__, self).__clean__()
+
     def test_create_subnet(self):
         """
         Tests the neutron_utils.create_network() function
     def test_create_subnet(self):
         """
         Tests the neutron_utils.create_network() function
@@ -264,7 +272,8 @@ class NeutronUtilsIPv6Tests(OSComponentTestCase):
 
     def setUp(self):
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
 
     def setUp(self):
         self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
-        self.neutron = neutron_utils.neutron_client(self.os_creds)
+        self.neutron = neutron_utils.neutron_client(
+            self.os_creds, self.os_session)
         self.network = None
 
     def tearDown(self):
         self.network = None
 
     def tearDown(self):
@@ -277,6 +286,8 @@ class NeutronUtilsIPv6Tests(OSComponentTestCase):
             except:
                 pass
 
             except:
                 pass
 
+        super(self.__class__, self).__clean__()
+
     def test_create_network_slaac(self):
         """
         Tests the neutron_utils.create_network() with an IPv6 subnet where DHCP
     def test_create_network_slaac(self):
         """
         Tests the neutron_utils.create_network() with an IPv6 subnet where DHCP
@@ -497,8 +508,10 @@ class NeutronUtilsRouterTests(OSComponentTestCase):
     def setUp(self):
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.port_name = str(guid) + '-port'
     def setUp(self):
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.port_name = str(guid) + '-port'
-        self.neutron = neutron_utils.neutron_client(self.os_creds)
-        self.keystone = keystone_utils.keystone_client(self.os_creds)
+        self.neutron = neutron_utils.neutron_client(
+            self.os_creds, self.os_session)
+        self.keystone = keystone_utils.keystone_client(
+            self.os_creds, self.os_session)
         self.network = None
         self.port = None
         self.router = None
         self.network = None
         self.port = None
         self.router = None
@@ -533,6 +546,8 @@ class NeutronUtilsRouterTests(OSComponentTestCase):
         if self.network:
             neutron_utils.delete_network(self.neutron, self.network)
 
         if self.network:
             neutron_utils.delete_network(self.neutron, self.network)
 
+        super(self.__class__, self).__clean__()
+
     def test_create_router_simple(self):
         """
         Tests the neutron_utils.create_router()
     def test_create_router_simple(self):
         """
         Tests the neutron_utils.create_router()
@@ -856,8 +871,10 @@ class NeutronUtilsSecurityGroupTests(OSComponentTestCase):
 
         self.security_groups = list()
         self.security_group_rules = list()
 
         self.security_groups = list()
         self.security_group_rules = list()
-        self.neutron = neutron_utils.neutron_client(self.os_creds)
-        self.keystone = keystone_utils.keystone_client(self.os_creds)
+        self.neutron = neutron_utils.neutron_client(
+            self.os_creds, self.os_session)
+        self.keystone = keystone_utils.keystone_client(
+            self.os_creds, self.os_session)
 
     def tearDown(self):
         """
 
     def tearDown(self):
         """
@@ -873,6 +890,8 @@ class NeutronUtilsSecurityGroupTests(OSComponentTestCase):
             except:
                 pass
 
             except:
                 pass
 
+        super(self.__class__, self).__clean__()
+
     def test_create_delete_simple_sec_grp(self):
         """
         Tests the neutron_utils.create_security_group() function
     def test_create_delete_simple_sec_grp(self):
         """
         Tests the neutron_utils.create_security_group() function
@@ -944,7 +963,8 @@ class NeutronUtilsSecurityGroupTests(OSComponentTestCase):
         for free_rule in free_rules:
             self.security_group_rules.append(free_rule)
 
         for free_rule in free_rules:
             self.security_group_rules.append(free_rule)
 
-        keystone = keystone_utils.keystone_client(self.os_creds)
+        keystone = keystone_utils.keystone_client(
+            self.os_creds, self.os_session)
         self.security_group_rules.append(
             neutron_utils.create_security_group_rule(
                 self.neutron, keystone, sec_grp_settings.rule_settings[0],
         self.security_group_rules.append(
             neutron_utils.create_security_group_rule(
                 self.neutron, keystone, sec_grp_settings.rule_settings[0],
@@ -1001,8 +1021,10 @@ class NeutronUtilsFloatingIpTests(OSComponentTestCase):
         Instantiates the CreateImage object that is responsible for downloading
         and creating an OS image file within OpenStack
         """
         Instantiates the CreateImage object that is responsible for downloading
         and creating an OS image file within OpenStack
         """
-        self.neutron = neutron_utils.neutron_client(self.os_creds)
-        self.keystone = keystone_utils.keystone_client(self.os_creds)
+        self.neutron = neutron_utils.neutron_client(
+            self.os_creds, self.os_session)
+        self.keystone = keystone_utils.keystone_client(
+            self.os_creds, self.os_session)
         self.floating_ip = None
 
     def tearDown(self):
         self.floating_ip = None
 
     def tearDown(self):
@@ -1016,6 +1038,8 @@ class NeutronUtilsFloatingIpTests(OSComponentTestCase):
             except:
                 pass
 
             except:
                 pass
 
+        super(self.__class__, self).__clean__()
+
     def test_floating_ips(self):
         """
         Tests the creation of a floating IP
     def test_floating_ips(self):
         """
         Tests the creation of a floating IP
index 910684c..f5df865 100644 (file)
@@ -49,7 +49,7 @@ class NovaSmokeTests(OSComponentTestCase):
         """
         Tests to ensure that the proper credentials can connect.
         """
         """
         Tests to ensure that the proper credentials can connect.
         """
-        nova = nova_utils.nova_client(self.os_creds)
+        nova = nova_utils.nova_client(self.os_creds, self.os_session)
 
         # This should not throw an exception
         nova.flavors.list()
 
         # This should not throw an exception
         nova.flavors.list()
@@ -58,7 +58,7 @@ class NovaSmokeTests(OSComponentTestCase):
         """
         Tests to ensure that get_hypervisors() function works.
         """
         """
         Tests to ensure that get_hypervisors() function works.
         """
-        nova = nova_utils.nova_client(self.os_creds)
+        nova = nova_utils.nova_client(self.os_creds, self.os_session)
 
         hosts = nova_utils.get_hypervisor_hosts(nova)
         # This should not throw an exception
 
         hosts = nova_utils.get_hypervisor_hosts(nova)
         # This should not throw an exception
@@ -95,7 +95,7 @@ class NovaUtilsKeypairTests(OSComponentTestCase):
         self.priv_key_file_path = 'tmp/' + guid
         self.pub_key_file_path = self.priv_key_file_path + '.pub'
 
         self.priv_key_file_path = 'tmp/' + guid
         self.pub_key_file_path = self.priv_key_file_path + '.pub'
 
-        self.nova = nova_utils.nova_client(self.os_creds)
+        self.nova = nova_utils.nova_client(self.os_creds, self.os_session)
         self.keys = nova_utils.create_keys()
         self.public_key = nova_utils.public_key_openssh(self.keys)
         self.keypair_name = guid
         self.keys = nova_utils.create_keys()
         self.public_key = nova_utils.public_key_openssh(self.keys)
         self.keypair_name = guid
@@ -123,6 +123,8 @@ class NovaUtilsKeypairTests(OSComponentTestCase):
         except:
             pass
 
         except:
             pass
 
+        super(self.__class__, self).__clean__()
+
     def test_create_keypair(self):
         """
         Tests the creation of an OpenStack keypair that does not exist.
     def test_create_keypair(self):
         """
         Tests the creation of an OpenStack keypair that does not exist.
@@ -176,7 +178,7 @@ class NovaUtilsFlavorTests(OSComponentTestCase):
         self.flavor_settings = FlavorConfig(
             name=guid + '-name', flavor_id=guid + '-id', ram=1, disk=1,
             vcpus=1, ephemeral=1, swap=2, rxtx_factor=3.0, is_public=False)
         self.flavor_settings = FlavorConfig(
             name=guid + '-name', flavor_id=guid + '-id', ram=1, disk=1,
             vcpus=1, ephemeral=1, swap=2, rxtx_factor=3.0, is_public=False)
-        self.nova = nova_utils.nova_client(self.os_creds)
+        self.nova = nova_utils.nova_client(self.os_creds, self.os_session)
         self.flavor = None
 
     def tearDown(self):
         self.flavor = None
 
     def tearDown(self):
@@ -189,6 +191,8 @@ class NovaUtilsFlavorTests(OSComponentTestCase):
             except:
                 pass
 
             except:
                 pass
 
+        super(self.__class__, self).__clean__()
+
     def test_create_flavor(self):
         """
         Tests the creation of an OpenStack keypair that does not exist.
     def test_create_flavor(self):
         """
         Tests the creation of an OpenStack keypair that does not exist.
@@ -242,10 +246,14 @@ class NovaUtilsInstanceTests(OSComponentTestCase):
 
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
 
 
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
 
-        self.nova = nova_utils.nova_client(self.os_creds)
-        self.keystone = keystone_utils.keystone_client(self.os_creds)
-        self.neutron = neutron_utils.neutron_client(self.os_creds)
-        self.glance = glance_utils.glance_client(self.os_creds)
+        self.nova = nova_utils.nova_client(
+            self.os_creds, self.os_session)
+        self.keystone = keystone_utils.keystone_client(
+            self.os_creds, self.os_session)
+        self.neutron = neutron_utils.neutron_client(
+            self.os_creds, self.os_session)
+        self.glance = glance_utils.glance_client(
+            self.os_creds, self.os_session)
 
         self.image_creator = None
         self.network_creator = None
 
         self.image_creator = None
         self.network_creator = None
@@ -316,6 +324,8 @@ class NovaUtilsInstanceTests(OSComponentTestCase):
             except:
                 pass
 
             except:
                 pass
 
+        super(self.__class__, self).__clean__()
+
     def test_create_instance(self):
         """
         Tests the nova_utils.create_server() method
     def test_create_instance(self):
         """
         Tests the nova_utils.create_server() method
@@ -363,8 +373,9 @@ class NovaUtilsInstanceVolumeTests(OSComponentTestCase):
 
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
 
 
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
 
-        self.nova = nova_utils.nova_client(self.os_creds)
-        self.cinder = cinder_utils.cinder_client(self.os_creds)
+        self.nova = nova_utils.nova_client(self.os_creds, self.os_session)
+        self.cinder = cinder_utils.cinder_client(
+            self.os_creds, self.os_session)
 
         self.image_creator = None
         self.network_creator = None
 
         self.image_creator = None
         self.network_creator = None
@@ -442,6 +453,8 @@ class NovaUtilsInstanceVolumeTests(OSComponentTestCase):
             except:
                 pass
 
             except:
                 pass
 
+        super(self.__class__, self).__clean__()
+
     def test_add_remove_volume(self):
         """
         Tests the nova_utils.attach_volume() and detach_volume functions with
     def test_add_remove_volume(self):
         """
         Tests the nova_utils.attach_volume() and detach_volume functions with
@@ -453,8 +466,10 @@ class NovaUtilsInstanceVolumeTests(OSComponentTestCase):
         self.assertEqual(0, len(self.volume_creator.get_volume().attachments))
 
         # Attach volume to VM
         self.assertEqual(0, len(self.volume_creator.get_volume().attachments))
 
         # Attach volume to VM
-        neutron = neutron_utils.neutron_client(self.os_creds)
-        keystone = keystone_utils.keystone_client(self.os_creds)
+        neutron = neutron_utils.neutron_client(
+            self.os_creds, self.os_session)
+        keystone = keystone_utils.keystone_client(
+            self.os_creds, self.os_session)
         self.assertIsNotNone(nova_utils.attach_volume(
             self.nova, neutron, keystone, self.instance_creator.get_vm_inst(),
             self.volume_creator.get_volume(), self.os_creds.project_name))
         self.assertIsNotNone(nova_utils.attach_volume(
             self.nova, neutron, keystone, self.instance_creator.get_vm_inst(),
             self.volume_creator.get_volume(), self.os_creds.project_name))
@@ -476,7 +491,8 @@ class NovaUtilsInstanceVolumeTests(OSComponentTestCase):
         self.assertTrue(attached)
         self.assertIsNotNone(vol_attach)
 
         self.assertTrue(attached)
         self.assertIsNotNone(vol_attach)
 
-        keystone = keystone_utils.keystone_client(self.os_creds)
+        keystone = keystone_utils.keystone_client(
+            self.os_creds, self.os_session)
         vm_attach = nova_utils.get_server_object_by_id(
             self.nova, neutron, keystone,
             self.instance_creator.get_vm_inst().id, self.os_creds.project_name)
         vm_attach = nova_utils.get_server_object_by_id(
             self.nova, neutron, keystone,
             self.instance_creator.get_vm_inst().id, self.os_creds.project_name)
@@ -528,8 +544,9 @@ class NovaUtilsInstanceVolumeTests(OSComponentTestCase):
         self.assertEqual(0, len(self.volume_creator.get_volume().attachments))
 
         # Attach volume to VM
         self.assertEqual(0, len(self.volume_creator.get_volume().attachments))
 
         # Attach volume to VM
-        neutron = neutron_utils.neutron_client(self.os_creds)
-        keystone = keystone_utils.keystone_client(self.os_creds)
+        neutron = neutron_utils.neutron_client(self.os_creds, self.os_session)
+        keystone = keystone_utils.keystone_client(
+            self.os_creds, self.os_session)
         with self.assertRaises(NovaException):
             nova_utils.attach_volume(
                 self.nova, neutron, keystone,
         with self.assertRaises(NovaException):
             nova_utils.attach_volume(
                 self.nova, neutron, keystone,
@@ -548,14 +565,16 @@ class NovaUtilsInstanceVolumeTests(OSComponentTestCase):
         self.assertEqual(0, len(self.volume_creator.get_volume().attachments))
 
         # Attach volume to VM
         self.assertEqual(0, len(self.volume_creator.get_volume().attachments))
 
         # Attach volume to VM
-        neutron = neutron_utils.neutron_client(self.os_creds)
-        keystone = keystone_utils.keystone_client(self.os_creds)
+        neutron = neutron_utils.neutron_client(self.os_creds, self.os_session)
+        keystone = keystone_utils.keystone_client(
+            self.os_creds, self.os_session)
         nova_utils.attach_volume(
             self.nova, neutron, keystone, self.instance_creator.get_vm_inst(),
             self.volume_creator.get_volume(), self.os_creds.project_name)
 
         # Check VmInst for attachment
         nova_utils.attach_volume(
             self.nova, neutron, keystone, self.instance_creator.get_vm_inst(),
             self.volume_creator.get_volume(), self.os_creds.project_name)
 
         # Check VmInst for attachment
-        keystone = keystone_utils.keystone_client(self.os_creds)
+        keystone = keystone_utils.keystone_client(
+            self.os_creds, self.os_session)
         latest_vm = nova_utils.get_server_object_by_id(
             self.nova, neutron, keystone,
             self.instance_creator.get_vm_inst().id, self.os_creds.project_name)
         latest_vm = nova_utils.get_server_object_by_id(
             self.nova, neutron, keystone,
             self.instance_creator.get_vm_inst().id, self.os_creds.project_name)
index 7dc59b5..14af990 100644 (file)
@@ -58,7 +58,8 @@ class SettingsUtilsNetworkingTests(OSComponentTestCase):
         self.network_name = guid + '-net'
         self.subnet_name = guid + '-subnet'
         self.net_creator = None
         self.network_name = guid + '-net'
         self.subnet_name = guid + '-subnet'
         self.net_creator = None
-        self.neutron = neutron_utils.neutron_client(self.os_creds)
+        self.neutron = neutron_utils.neutron_client(
+            self.os_creds, self.os_session)
 
     def tearDown(self):
         """
 
     def tearDown(self):
         """
@@ -70,6 +71,8 @@ class SettingsUtilsNetworkingTests(OSComponentTestCase):
             except:
                 pass
 
             except:
                 pass
 
+        super(self.__class__, self).__clean__()
+
     def test_derive_net_settings_no_subnet(self):
         """
         Validates the utility function settings_utils#create_network_config
     def test_derive_net_settings_no_subnet(self):
         """
         Validates the utility function settings_utils#create_network_config
@@ -154,10 +157,14 @@ class SettingsUtilsVmInstTests(OSComponentTestCase):
         Instantiates the CreateImage object that is responsible for downloading
         and creating an OS image file within OpenStack
         """
         Instantiates the CreateImage object that is responsible for downloading
         and creating an OS image file within OpenStack
         """
-        self.nova = nova_utils.nova_client(self.os_creds)
-        self.keystone = keystone_utils.keystone_client(self.os_creds)
-        self.glance = glance_utils.glance_client(self.os_creds)
-        self.neutron = neutron_utils.neutron_client(self.os_creds)
+        self.nova = nova_utils.nova_client(
+            self.os_creds, self.os_session)
+        self.keystone = keystone_utils.keystone_client(
+            self.os_creds, self.os_session)
+        self.glance = glance_utils.glance_client(
+            self.os_creds, self.os_session)
+        self.neutron = neutron_utils.neutron_client(
+            self.os_creds, self.os_session)
 
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.keypair_priv_filepath = 'tmp/' + guid
 
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.keypair_priv_filepath = 'tmp/' + guid
@@ -315,7 +322,7 @@ class SettingsUtilsVmInstTests(OSComponentTestCase):
         if os.path.isfile(self.test_file_local_path):
             os.remove(self.test_file_local_path)
 
         if os.path.isfile(self.test_file_local_path):
             os.remove(self.test_file_local_path)
 
-        super(self.__class__, self).__clean__()
+        super(self.__class__, self).__clean__()
 
     def test_derive_vm_inst_config(self):
         """
 
     def test_derive_vm_inst_config(self):
         """
index 851dd64..14fe8e9 100644 (file)
@@ -58,7 +58,7 @@ class AnsibleProvisioningTests(OSIntegrationTestCase):
         """
         super(self.__class__, self).__start__()
 
         """
         super(self.__class__, self).__start__()
 
-        self.nova = nova_utils.nova_client(self.os_creds)
+        self.nova = nova_utils.nova_client(self.os_creds, self.os_session)
 
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.keypair_priv_filepath = 'tmp/' + guid
 
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.keypair_priv_filepath = 'tmp/' + guid