diff options
Diffstat (limited to 'snaps/openstack/openstack_creator.py')
-rw-r--r-- | snaps/openstack/openstack_creator.py | 61 |
1 files changed, 41 insertions, 20 deletions
diff --git a/snaps/openstack/openstack_creator.py b/snaps/openstack/openstack_creator.py index 945a78b..6eeac37 100644 --- a/snaps/openstack/openstack_creator.py +++ b/snaps/openstack/openstack_creator.py @@ -13,8 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. from snaps.domain.creator import CloudObject -from snaps.openstack.utils import (nova_utils, neutron_utils, keystone_utils, - cinder_utils) +from snaps.openstack.utils import ( + nova_utils, neutron_utils, keystone_utils, cinder_utils, magnum_utils) __author__ = 'spisarski' @@ -29,17 +29,24 @@ class OpenStackCloudObject(CloudObject): Constructor :param os_creds: the OpenStack credentials object """ - # super(self.__class__, self, os_creds) self._os_creds = os_creds + self._os_session = None + self._keystone = None 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 get_os_creds(self): + return self._os_creds 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): @@ -56,14 +63,12 @@ class OpenStackComputeObject(OpenStackCloudObject): 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 clean(self): - raise NotImplementedError('Do not override abstract method') - class OpenStackNetworkObject(OpenStackCloudObject): """ @@ -79,14 +84,13 @@ class OpenStackNetworkObject(OpenStackCloudObject): 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 clean(self): - raise NotImplementedError('Do not override abstract method') - class OpenStackIdentityObject(OpenStackCloudObject): """ @@ -99,17 +103,13 @@ class OpenStackIdentityObject(OpenStackCloudObject): :param os_creds: the OpenStack credentials object """ super(OpenStackIdentityObject, self).__init__(os_creds) - self._keystone = None 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 clean(self): - raise NotImplementedError('Do not override abstract method') - class OpenStackVolumeObject(OpenStackCloudObject): """ @@ -125,10 +125,31 @@ class OpenStackVolumeObject(OpenStackCloudObject): 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 clean(self): + +class OpenStackMagnumObject(OpenStackCloudObject): + """ + Abstract class for all OpenStack compute creators + """ + + def __init__(self, os_creds): + """ + Constructor + :param os_creds: the OpenStack credentials object + """ + super(OpenStackMagnumObject, self).__init__(os_creds) + self._magnum = None + + def initialize(self): + 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') |