Add ability to set deploy interface

Change-Id: If41cee96258a06982748bca134ec70c2cde6e51b
This commit is contained in:
Pavlo Shchelokovskyy 2017-12-21 16:11:28 +00:00
parent e13f6b6f85
commit 12e627552c
5 changed files with 27 additions and 6 deletions

View File

@ -113,6 +113,9 @@ BaremetalGroup = [
cfg.ListOpt('enabled_hardware_types',
default=['ipmi'],
help="List of Ironic enabled hardware types."),
cfg.ListOpt('enabled_deploy_interfaces',
default=['iscsi', 'direct'],
help="List of Ironic enabled deploy interfaces."),
cfg.IntOpt('adjusted_root_disk_size_gb',
min=0,
help="Ironic adjusted disk size to use in the standalone tests "

View File

@ -387,6 +387,7 @@ class BaremetalClient(base.BaremetalClient):
'properties/local_gb',
'properties/memory_mb',
'driver',
'deploy_interface',
'instance_uuid',
'resource_class')
if not patch:

View File

@ -140,9 +140,9 @@ class BaremetalScenarioTest(manager.ScenarioTest):
@classmethod
@retry_on_conflict
def update_node_driver(cls, node_id, driver):
def update_node_driver(cls, node_id, driver, **interfaces):
_, body = cls.baremetal_client.update_node(
node_id, driver=driver)
node_id, driver=driver, **interfaces)
return body
@classmethod

View File

@ -206,7 +206,7 @@ class BaremetalStandaloneManager(bm.BaremetalScenarioTest,
return nodes[0]
@classmethod
def boot_node(cls, driver, image_ref, image_checksum=None):
def boot_node(cls, driver, image_ref, image_checksum=None, **interfaces):
"""Boot ironic node.
The following actions are executed:
@ -222,10 +222,11 @@ class BaremetalStandaloneManager(bm.BaremetalScenarioTest,
:param image_ref: Reference to user image to boot node with.
:param image_checksum: md5sum of image specified in image_ref.
Needed only when direct HTTP link is provided.
:param interfaces: driver interfaces to set on the node
:returns: Ironic node.
"""
node = cls.get_and_reserve_node()
cls.update_node_driver(node['uuid'], driver)
cls.update_node_driver(node['uuid'], driver, **interfaces)
network, subnet, router = cls.create_networks()
n_port = cls.create_neutron_port(network_id=network['id'])
cls.vif_attach(node_id=node['uuid'], vif_id=n_port['id'])
@ -280,6 +281,9 @@ class BaremetalStandaloneScenarioTest(BaremetalStandaloneManager):
# The node driver to use in the test
driver = None
# The deploy interface to use by the HW type
deploy_interface = None
# User image ref to boot node with.
image_ref = None
@ -307,6 +311,13 @@ class BaremetalStandaloneScenarioTest(BaremetalStandaloneManager):
'driver': cls.driver,
'enabled_drivers': CONF.baremetal.enabled_drivers,
'enabled_hw_types': CONF.baremetal.enabled_hardware_types})
if (cls.deploy_interface and cls.deploy_interface not in
CONF.baremetal.enabled_deploy_interfaces):
raise cls.skipException(
"Deploy interface %(iface)s required by test is not "
"in the list of enabled deploy interfaces %(enabled)s" % {
'iface': cls.deploy_interface,
'enabled': CONF.baremetal.enabled_deploy_interfaces})
if not cls.wholedisk_image and CONF.baremetal.use_provision_network:
raise cls.skipException(
'Partitioned images are not supported with multitenancy.')
@ -322,8 +333,10 @@ class BaremetalStandaloneScenarioTest(BaremetalStandaloneManager):
image_checksum = None
if not uuidutils.is_uuid_like(cls.image_ref):
image_checksum = cls.image_checksum
cls.node = cls.boot_node(cls.driver, cls.image_ref,
image_checksum=image_checksum)
boot_kwargs = {'image_checksum': image_checksum}
if cls.deploy_interface:
boot_kwargs['deploy_interface'] = cls.deploy_interface
cls.node = cls.boot_node(cls.driver, cls.image_ref, **boot_kwargs)
cls.node_ip = cls.add_floatingip_to_node(cls.node['uuid'])
@classmethod

View File

@ -121,7 +121,9 @@ class BaremetalPxeIpmitoolPartitioned(bsm.BaremetalStandaloneScenarioTest):
class BaremetalIpmiWholedisk(bsm.BaremetalStandaloneScenarioTest):
api_microversion = '1.31' # to set the deploy_interface
driver = 'ipmi'
deploy_interface = 'direct'
image_ref = CONF.baremetal.whole_disk_image_ref
wholedisk_image = True
@ -134,7 +136,9 @@ class BaremetalIpmiWholedisk(bsm.BaremetalStandaloneScenarioTest):
class BaremetalIpmiPartitioned(bsm.BaremetalStandaloneScenarioTest):
api_microversion = '1.31' # to set the deploy_interface
driver = 'ipmi'
deploy_interface = 'iscsi'
image_ref = CONF.baremetal.partition_image_ref
wholedisk_image = False