summaryrefslogtreecommitdiffstats
path: root/snaps/openstack/create_flavor.py
diff options
context:
space:
mode:
authorspisarski <s.pisarski@cablelabs.com>2017-10-12 14:17:59 -0600
committerspisarski <s.pisarski@cablelabs.com>2017-10-12 14:17:59 -0600
commit92d57dd388e5ad292d476298ad79d8a566780e2a (patch)
treedeaa2c6854aa53a6e71cc15c06c9d5d1e57beab2 /snaps/openstack/create_flavor.py
parentcef5b452099579a3f69a5c233b7ba25bd0d80f5c (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.py40
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