summaryrefslogtreecommitdiffstats
path: root/snaps/openstack/create_flavor.py
diff options
context:
space:
mode:
authorspisarski <s.pisarski@cablelabs.com>2017-02-17 09:21:59 -0700
committerspisarski <s.pisarski@cablelabs.com>2017-02-17 09:21:59 -0700
commit868cd220974347b25a1fb5773de9e7c36f6e1203 (patch)
treeee3f2315e1bcd1f889910d9b82deef28aec8a88d /snaps/openstack/create_flavor.py
parent57777f3df521553a06cd01a3861b415d2905ceca (diff)
Added the ability to add in configurable metadata to flavor creation.
In order to properly support standard and DPDK installations, the default metadata value is hw:mem_page_size=any. JIRA: SNAPS-28 JIRA: FUNCTEST-737 Change-Id: Ic882e8f85a97320d65ede3d6a00735a909a4ead2 Signed-off-by: spisarski <s.pisarski@cablelabs.com>
Diffstat (limited to 'snaps/openstack/create_flavor.py')
-rw-r--r--snaps/openstack/create_flavor.py14
1 files changed, 13 insertions, 1 deletions
diff --git a/snaps/openstack/create_flavor.py b/snaps/openstack/create_flavor.py
index 60a87cd..68a7080 100644
--- a/snaps/openstack/create_flavor.py
+++ b/snaps/openstack/create_flavor.py
@@ -22,6 +22,8 @@ __author__ = 'spisarski'
logger = logging.getLogger('create_image')
+DEFAULT_METADATA = {'hw:mem_page_size': 'any'}
+
class OpenStackFlavor:
"""
@@ -51,6 +53,9 @@ class OpenStackFlavor:
logger.info('Found flavor with name - ' + self.flavor_settings.name)
elif not cleanup:
self.__flavor = nova_utils.create_flavor(self.__nova, self.flavor_settings)
+ if self.flavor_settings.metadata:
+ self.__flavor.set_keys(self.flavor_settings.metadata)
+ self.__flavor = nova_utils.get_flavor_by_name(self.__nova, self.flavor_settings.name)
else:
logger.info('Did not create flavor due to cleanup mode')
@@ -83,7 +88,7 @@ class FlavorSettings:
"""
def __init__(self, config=None, name=None, flavor_id='auto', ram=None, disk=None, vcpus=None, ephemeral=0, swap=0,
- rxtx_factor=1.0, is_public=True):
+ rxtx_factor=1.0, is_public=True, metadata=DEFAULT_METADATA):
"""
Constructor
:param config: dict() object containing the configuration settings using the attribute names below as each
@@ -98,6 +103,7 @@ class FlavorSettings:
:param rxtx_factor: the receive/transmit factor to be set on ports if backend supports
QoS extension (default 1.0)
:param is_public: denotes whether or not the flavor is public (default True)
+ :param metadata: freeform dict() for special metadata (default hw:mem_page_size=any)
"""
if config:
@@ -131,6 +137,11 @@ class FlavorSettings:
self.is_public = config['is_public']
else:
self.is_public = is_public
+
+ if config.get('metadata'):
+ self.metadata = config['metadata']
+ else:
+ self.metadata = metadata
else:
self.name = name
self.flavor_id = flavor_id
@@ -141,6 +152,7 @@ class FlavorSettings:
self.swap = swap
self.rxtx_factor = rxtx_factor
self.is_public = is_public
+ self.metadata = metadata
if not self.name or not self.ram or not self.disk or not self.vcpus:
raise Exception('The attributes name, ram, disk, and vcpus are required for FlavorSettings')