logger = logging.getLogger('create_image')
+DEFAULT_METADATA = {'hw:mem_page_size': 'any'}
+
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')
"""
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
: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:
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
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')
import uuid
import unittest
+from snaps.openstack import create_flavor
from snaps.openstack.create_flavor import FlavorSettings, OpenStackFlavor
from snaps.openstack.tests.os_source_file_test import OSComponentTestCase
from snaps.openstack.utils import nova_utils
self.assertEquals(0, settings.swap)
self.assertEquals(1.0, settings.rxtx_factor)
self.assertEquals(True, settings.is_public)
+ self.assertEquals(create_flavor.DEFAULT_METADATA, settings.metadata)
def test_config_with_name_ram_disk_vcpus_only(self):
settings = FlavorSettings(config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3})
self.assertEquals(0, settings.swap)
self.assertEquals(1.0, settings.rxtx_factor)
self.assertEquals(True, settings.is_public)
+ self.assertEquals(create_flavor.DEFAULT_METADATA, settings.metadata)
def test_all(self):
- settings = FlavorSettings(name='foo', flavor_id='bar', ram=1, disk=2, vcpus=3, ephemeral=4, swap=5, rxtx_factor=6.0,
- is_public=False)
+ metadata = {'foo': 'bar'}
+ settings = FlavorSettings(name='foo', flavor_id='bar', ram=1, disk=2, vcpus=3, ephemeral=4, swap=5,
+ rxtx_factor=6.0, is_public=False, metadata=metadata)
self.assertEquals('foo', settings.name)
self.assertEquals('bar', settings.flavor_id)
self.assertEquals(1, settings.ram)
self.assertEquals(5, settings.swap)
self.assertEquals(6.0, settings.rxtx_factor)
self.assertEquals(False, settings.is_public)
+ self.assertEquals(metadata, settings.metadata)
def test_config_all(self):
- settings = FlavorSettings(config={'name': 'foo', 'flavor_id': 'bar', 'ram': 1, 'disk': 2, 'vcpus': 3, 'ephemeral': 4,
- 'swap': 5, 'rxtx_factor': 6.0, 'is_public': False})
+ metadata = {'foo': 'bar'}
+ settings = FlavorSettings(config={'name': 'foo', 'flavor_id': 'bar', 'ram': 1, 'disk': 2, 'vcpus': 3,
+ 'ephemeral': 4, 'swap': 5, 'rxtx_factor': 6.0, 'is_public': False,
+ 'metadata': metadata})
self.assertEquals('foo', settings.name)
self.assertEquals('bar', settings.flavor_id)
self.assertEquals(1, settings.ram)
self.assertEquals(5, settings.swap)
self.assertEquals(6.0, settings.rxtx_factor)
self.assertEquals(False, settings.is_public)
+ self.assertEquals(metadata, settings.metadata)
class CreateFlavorTests(OSComponentTestCase):