diff options
author | spisarski <s.pisarski@cablelabs.com> | 2017-10-12 14:17:59 -0600 |
---|---|---|
committer | spisarski <s.pisarski@cablelabs.com> | 2017-10-12 14:17:59 -0600 |
commit | 92d57dd388e5ad292d476298ad79d8a566780e2a (patch) | |
tree | deaa2c6854aa53a6e71cc15c06c9d5d1e57beab2 /snaps/openstack/create_flavor.py | |
parent | cef5b452099579a3f69a5c233b7ba25bd0d80f5c (diff) |
Improved creator/state machine classes class hierarchy.
Created abstract superclasses for all classes responsible
for deploying and maintaining the state of objects deployed
to OpenStack which should help developers better understand
the library.
JIRA: SNAPS-183
Change-Id: I7651bd338f0d4e4086abbc11755e6be4f19058bd
Signed-off-by: spisarski <s.pisarski@cablelabs.com>
Diffstat (limited to 'snaps/openstack/create_flavor.py')
-rw-r--r-- | snaps/openstack/create_flavor.py | 40 |
1 files changed, 24 insertions, 16 deletions
diff --git a/snaps/openstack/create_flavor.py b/snaps/openstack/create_flavor.py index ec4c765..1479bb0 100644 --- a/snaps/openstack/create_flavor.py +++ b/snaps/openstack/create_flavor.py @@ -16,6 +16,7 @@ import logging from novaclient.exceptions import NotFound +from snaps.openstack.openstack_creator import OpenStackComputeObject from snaps.openstack.utils import nova_utils __author__ = 'spisarski' @@ -26,7 +27,7 @@ MEM_PAGE_SIZE_ANY = {'hw:mem_page_size': 'any'} MEM_PAGE_SIZE_LARGE = {'hw:mem_page_size': 'large'} -class OpenStackFlavor: +class OpenStackFlavor(OpenStackComputeObject): """ Class responsible for creating a user in OpenStack """ @@ -38,29 +39,36 @@ class OpenStackFlavor: :param flavor_settings: The flavor settings :return: """ - self.__os_creds = os_creds + super(self.__class__, self).__init__(os_creds) + self.flavor_settings = flavor_settings self.__flavor = None - self.__nova = None - def create(self, cleanup=False): + def initialize(self): """ - Creates the image in OpenStack if it does not already exist - :param cleanup: Denotes whether or not this is being called for cleanup - or not - :return: The OpenStack flavor object + Loads the existing OpenStack flavor + :return: The Flavor domain object or None """ - self.__nova = nova_utils.nova_client(self.__os_creds) + super(self.__class__, self).initialize() + self.__flavor = nova_utils.get_flavor_by_name( - self.__nova, self.flavor_settings.name) + self._nova, self.flavor_settings.name) if self.__flavor: - logger.info( - 'Found flavor with name - ' + self.flavor_settings.name) - elif not cleanup: + logger.info('Found flavor with name - %s', + self.flavor_settings.name) + return self.__flavor + + def create(self): + """ + Creates the image in OpenStack if it does not already exist + :return: The OpenStack flavor object + """ + self.initialize() + if not self.__flavor: self.__flavor = nova_utils.create_flavor( - self.__nova, self.flavor_settings) + self._nova, self.flavor_settings) if self.flavor_settings.metadata: - nova_utils.set_flavor_keys(self.__nova, self.__flavor, + nova_utils.set_flavor_keys(self._nova, self.__flavor, self.flavor_settings.metadata) else: logger.info('Did not create flavor due to cleanup mode') @@ -74,7 +82,7 @@ class OpenStackFlavor: """ if self.__flavor: try: - nova_utils.delete_flavor(self.__nova, self.__flavor) + nova_utils.delete_flavor(self._nova, self.__flavor) except NotFound: pass |