Add custom flavor in config file

Change-Id: I511ff3a50d8f4b937f8240ef143bce4d62a9a6f6
This commit is contained in:
Stefano Chiesa 2016-12-09 14:30:28 -08:00
parent e2148c6c09
commit 3d5769f7c0
3 changed files with 45 additions and 2 deletions

View File

@ -22,7 +22,20 @@ ssh_vm_username: 'ubuntu'
# Name of the flavor to use for the test VMs
# This name must be an exact match to a flavor name known by the target
# OpenStack deployment (as shown from 'nova flavor-list')
flavor_type: 'm1.small'
flavor_type: 'vmtp'
# Custom flavor attributes
flavor:
# Number of vCPUs for the flavor
vcpus: 1
# Memory for the flavor in MB
ram: 2048
# Size of local disk in GB
disk: 0
# metadata are supported and can be added if needed, optional
# extra_specs:
# "hw:cpu_policy": dedicated
# "hw:mem_page_size": 2048
# Name of the availability zone to use for the test VMs
# Must be one of the zones listed by 'nova availability-zone-list'

View File

@ -231,9 +231,29 @@ class Compute(object):
self.novaclient.servers.delete(server)
def find_flavor(self, flavor_type):
flavor = self.novaclient.flavors.find(name=flavor_type)
try:
flavor = self.novaclient.flavors.find(name=flavor_type)
return flavor
except exceptions.NotFound:
return None
def create_flavor(self, flavor_type, vcpus, ram, disk, ephemeral=0, extra_specs=None):
flavor = self.novaclient.flavors.create(name=flavor_type, vcpus=vcpus, ram=ram, disk=disk,
ephemeral=ephemeral)
if extra_specs:
flavor.set_keys(extra_specs)
LOG.info('Flavor %s created.' % flavor_type)
return flavor
def delete_flavor(self, flavor):
try:
flavor.delete()
LOG.info('Flavor %s deleted.' % flavor.name)
return True
except novaclient.exceptions:
LOG.error('Failed deleting flavor %s.' % flavor.name)
return False
def normalize_az_host(self, az, host):
if not az:
az = self.config.availability_zone

View File

@ -146,6 +146,7 @@ class VmtpTest(object):
self.instance_access = None
self.glance_client = None
self.image_uploaded = False
self.flavor_created = False
self.rescol = rescol
self.config = config
self.cred = cred
@ -235,7 +236,14 @@ class VmtpTest(object):
self.assert_true(self.image_instance)
LOG.info('Found image %s to launch VM, will continue', self.config.image_name)
self.flavor_type = self.comp.find_flavor(self.config.flavor_type)
if self.flavor_type is None:
LOG.info('Flavor %s not found. Creating custom flavor...', self.config.flavor_type)
self.flavor_type = self.comp.create_flavor(self.config.flavor_type,
**dict(self.config.flavor))
self.flavor_created = True
self.net = network.Network(neutron, self.config)
self.rescol.add_property('l2agent_type', self.net.l2agent_type)
@ -429,6 +437,8 @@ class VmtpTest(object):
LOG.warning('Security group in use: not deleted')
if self.image_uploaded and self.config.delete_image_after_run:
self.comp.delete_image(self.glance_client, self.config.image_name)
if self.flavor_created:
self.comp.delete_flavor(self.flavor_type)
def run(self):
error_flag = False