2e680f9f80
This adds test for sync boot mode which changes boot mode from 'bios' to 'uefi' and vice versa using iDRAC redfish Change-Id: I43241204e71ab7e0d8c8929e216ce9473c3c2e1e
657 lines
22 KiB
Python
657 lines
22 KiB
Python
#
|
|
# Copyright 2017 Mirantis Inc.
|
|
#
|
|
# Copyright (c) 2022 Dell Inc. or its subsidiaries.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
from tempest.common import utils
|
|
from tempest import config
|
|
from tempest.lib import decorators
|
|
|
|
from ironic_tempest_plugin.tests.scenario import \
|
|
baremetal_standalone_manager as bsm
|
|
|
|
CONF = config.CONF
|
|
|
|
|
|
class BaremetalAgentIpmitoolWholedisk(bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
driver = 'agent_ipmitool'
|
|
image_ref = CONF.baremetal.whole_disk_image_ref
|
|
wholedisk_image = True
|
|
|
|
@decorators.idempotent_id('defff515-a6ff-44f6-9d8d-2ded51196d98')
|
|
@utils.services('image', 'network', 'object_storage')
|
|
def test_ip_access_to_server(self):
|
|
self.boot_and_verify_node()
|
|
|
|
|
|
class BaremetalAgentIpmitoolWholediskHttpLink(
|
|
bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
driver = 'agent_ipmitool'
|
|
image_ref = CONF.baremetal.whole_disk_image_url
|
|
image_checksum = CONF.baremetal.whole_disk_image_checksum
|
|
wholedisk_image = True
|
|
|
|
@classmethod
|
|
def skip_checks(cls):
|
|
super(BaremetalAgentIpmitoolWholediskHttpLink, cls).skip_checks()
|
|
if not CONF.baremetal_feature_enabled.ipxe_enabled:
|
|
skip_msg = ("HTTP server is not available when ipxe is disabled.")
|
|
raise cls.skipException(skip_msg)
|
|
|
|
@decorators.idempotent_id('d926c683-1a32-44df-afd0-e60134346fd0')
|
|
@utils.services('network')
|
|
def test_ip_access_to_server(self):
|
|
self.boot_and_verify_node()
|
|
|
|
|
|
class BaremetalAgentIpmitoolPartitioned(bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
driver = 'agent_ipmitool'
|
|
image_ref = CONF.baremetal.partition_image_ref
|
|
wholedisk_image = False
|
|
|
|
@decorators.idempotent_id('27b86130-d8dc-419d-880a-fbbbe4ce3f8c')
|
|
@utils.services('image', 'network', 'object_storage')
|
|
def test_ip_access_to_server(self):
|
|
self.boot_and_verify_node()
|
|
|
|
|
|
class BaremetalPxeIpmitoolWholedisk(bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
driver = 'pxe_ipmitool'
|
|
image_ref = CONF.baremetal.whole_disk_image_ref
|
|
wholedisk_image = True
|
|
|
|
@decorators.idempotent_id('d8c5badd-45db-4d05-bbe8-35babbed6e86')
|
|
@utils.services('image', 'network')
|
|
def test_ip_access_to_server(self):
|
|
self.boot_and_verify_node()
|
|
|
|
|
|
class BaremetalPxeIpmitoolWholediskHttpLink(
|
|
bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
driver = 'pxe_ipmitool'
|
|
image_ref = CONF.baremetal.whole_disk_image_url
|
|
image_checksum = CONF.baremetal.whole_disk_image_checksum
|
|
wholedisk_image = True
|
|
|
|
@classmethod
|
|
def skip_checks(cls):
|
|
super(BaremetalPxeIpmitoolWholediskHttpLink, cls).skip_checks()
|
|
if not CONF.baremetal_feature_enabled.ipxe_enabled:
|
|
skip_msg = ("HTTP server is not available when ipxe is disabled.")
|
|
raise cls.skipException(skip_msg)
|
|
|
|
@decorators.idempotent_id('71ccf06f-6765-40fd-8252-1b1bfa423b9b')
|
|
@utils.services('network')
|
|
def test_ip_access_to_server(self):
|
|
self.boot_and_verify_node()
|
|
|
|
|
|
class BaremetalPxeIpmitoolPartitioned(bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
driver = 'pxe_ipmitool'
|
|
image_ref = CONF.baremetal.partition_image_ref
|
|
wholedisk_image = False
|
|
|
|
@decorators.idempotent_id('ea85e19c-6869-4577-b9bb-2eb150f77c90')
|
|
@utils.services('image', 'network')
|
|
def test_ip_access_to_server(self):
|
|
self.boot_and_verify_node()
|
|
|
|
|
|
class BaremetalDriverIscsiWholedisk(bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
api_microversion = '1.31' # to set the deploy_interface
|
|
if 'redfish' in CONF.baremetal.enabled_hardware_types:
|
|
driver = 'redfish'
|
|
else:
|
|
driver = 'ipmi'
|
|
|
|
deploy_interface = 'iscsi'
|
|
image_ref = CONF.baremetal.whole_disk_image_ref
|
|
wholedisk_image = True
|
|
|
|
@classmethod
|
|
def skip_checks(cls):
|
|
super(BaremetalDriverIscsiWholedisk, cls).skip_checks()
|
|
if cls.driver == 'redfish':
|
|
skip_msg = ("Test covered when using ipmi")
|
|
raise cls.skipException(skip_msg)
|
|
|
|
@decorators.idempotent_id('f25b71df-2150-45d7-a780-7f5b07124808')
|
|
@utils.services('image', 'network')
|
|
def test_ip_access_to_server(self):
|
|
self.boot_and_verify_node()
|
|
|
|
|
|
class BaremetalDriverDirectWholedisk(bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
api_microversion = '1.31' # to set the deploy_interface
|
|
if 'redfish' in CONF.baremetal.enabled_hardware_types:
|
|
driver = 'redfish'
|
|
else:
|
|
driver = 'ipmi'
|
|
deploy_interface = 'direct'
|
|
image_ref = CONF.baremetal.whole_disk_image_ref
|
|
wholedisk_image = True
|
|
|
|
@classmethod
|
|
def skip_checks(cls):
|
|
super(BaremetalDriverDirectWholedisk, cls).skip_checks()
|
|
if cls.driver == 'ipmi':
|
|
skip_msg = ("Test covered when using redfish")
|
|
raise cls.skipException(skip_msg)
|
|
|
|
@decorators.idempotent_id('c2db24e7-07dc-4a20-8f93-d4efae2bfd4e')
|
|
@utils.services('image', 'network')
|
|
def test_ip_access_to_server(self):
|
|
self.boot_and_verify_node()
|
|
|
|
|
|
class BaremetalDriverIscsiPartitioned(bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
api_microversion = '1.31' # to set the deploy_interface
|
|
if 'redfish' in CONF.baremetal.enabled_hardware_types:
|
|
driver = 'redfish'
|
|
else:
|
|
driver = 'ipmi'
|
|
deploy_interface = 'iscsi'
|
|
image_ref = CONF.baremetal.partition_image_ref
|
|
wholedisk_image = False
|
|
boot_option = 'netboot' if CONF.baremetal.partition_netboot else 'local'
|
|
|
|
@classmethod
|
|
def skip_checks(cls):
|
|
super(BaremetalDriverIscsiPartitioned, cls).skip_checks()
|
|
if cls.driver == 'ipmi':
|
|
skip_msg = ("Test covered when using redfish")
|
|
raise cls.skipException(skip_msg)
|
|
|
|
@decorators.idempotent_id('7d0b205e-edbc-4e2d-9f6d-95cd74eefecb')
|
|
@utils.services('image', 'network')
|
|
def test_ip_access_to_server(self):
|
|
self.boot_and_verify_node()
|
|
|
|
|
|
class BaremetalDriverDirectPartitioned(bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
api_microversion = '1.31' # to set the deploy_interface
|
|
if 'redfish' in CONF.baremetal.enabled_hardware_types:
|
|
driver = 'redfish'
|
|
else:
|
|
driver = 'ipmi'
|
|
deploy_interface = 'direct'
|
|
image_ref = CONF.baremetal.partition_image_ref
|
|
wholedisk_image = False
|
|
boot_option = 'netboot' if CONF.baremetal.partition_netboot else 'local'
|
|
|
|
@classmethod
|
|
def skip_checks(cls):
|
|
super(BaremetalDriverDirectPartitioned, cls).skip_checks()
|
|
if cls.driver == 'redfish':
|
|
skip_msg = ("Test covered when using ipmi")
|
|
raise cls.skipException(skip_msg)
|
|
|
|
@decorators.idempotent_id('7b4b2dcd-2bbb-44f5-991f-0964300af6b7')
|
|
@utils.services('image', 'network')
|
|
def test_ip_access_to_server(self):
|
|
self.boot_and_verify_node()
|
|
|
|
|
|
class BaremetalDriverAnsibleWholedisk(bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
api_microversion = '1.31' # to set the deploy_interface
|
|
if 'redfish' in CONF.baremetal.enabled_hardware_types:
|
|
driver = 'redfish'
|
|
else:
|
|
driver = 'ipmi'
|
|
deploy_interface = 'ansible'
|
|
image_ref = CONF.baremetal.whole_disk_image_ref
|
|
wholedisk_image = True
|
|
|
|
@decorators.idempotent_id('cde532cc-81ba-4489-b374-b4a85cc203eb')
|
|
@utils.services('image', 'network')
|
|
def test_ip_access_to_server(self):
|
|
self.boot_and_verify_node()
|
|
|
|
|
|
class BaremetalIpmiRescueWholedisk(bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
api_microversion = '1.38'
|
|
min_microversion = '1.38'
|
|
driver = 'ipmi'
|
|
rescue_interface = 'agent'
|
|
image_ref = CONF.baremetal.whole_disk_image_ref
|
|
wholedisk_image = True
|
|
|
|
# NOTE(tiendc) Using direct deploy interface and a whole disk
|
|
# image may lead to the bug:
|
|
# https://bugs.launchpad.net/ironic/+bug/1750958
|
|
# This is a workaround by using iscsi deploy interface.
|
|
deploy_interface = 'iscsi'
|
|
|
|
@decorators.idempotent_id('d6a1780f-c4bb-4136-8144-29e822e14d66')
|
|
@utils.services('image', 'network')
|
|
def test_rescue_mode(self):
|
|
self.set_node_to_active(self.image_ref)
|
|
self.rescue_unrescue()
|
|
|
|
|
|
class BaremetalIpmiRescuePartitioned(bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
api_microversion = '1.38'
|
|
min_microversion = '1.38'
|
|
driver = 'ipmi'
|
|
rescue_interface = 'agent'
|
|
image_ref = CONF.baremetal.partition_image_ref
|
|
wholedisk_image = False
|
|
boot_option = 'netboot' if CONF.baremetal.partition_netboot else 'local'
|
|
|
|
# NOTE(jroll) the ansible deploy interface doesn't support partition images
|
|
# with netboot mode. Since that's what is happening here, explicitly choose
|
|
# a deploy interface to be sure we don't end up with a node using the
|
|
# ansible interface here.
|
|
deploy_interface = 'iscsi'
|
|
|
|
@decorators.idempotent_id('113acd0a-9872-4631-b3ee-54da7e3bb262')
|
|
@utils.services('image', 'network')
|
|
def test_rescue_mode(self):
|
|
self.set_node_to_active(self.image_ref)
|
|
self.rescue_unrescue()
|
|
|
|
|
|
class BaremetalIloDirectWholediskHttpLink(
|
|
bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
api_microversion = '1.31' # to set the deploy_interface
|
|
driver = 'ilo'
|
|
deploy_interface = 'direct'
|
|
boot_interface = 'ilo-virtual-media'
|
|
image_ref = CONF.baremetal.whole_disk_image_url
|
|
image_checksum = CONF.baremetal.whole_disk_image_checksum
|
|
wholedisk_image = True
|
|
|
|
@decorators.idempotent_id('c2db24e7-b9bb-44df-6765-e60134346fd0')
|
|
@utils.services('network')
|
|
def test_ip_access_to_server(self):
|
|
self.boot_and_verify_node()
|
|
|
|
|
|
class BaremetalIloDirectPartitioned(bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
api_microversion = '1.31' # to set the deploy_interface
|
|
driver = 'ilo'
|
|
deploy_interface = 'direct'
|
|
boot_interface = 'ilo-virtual-media'
|
|
image_ref = CONF.baremetal.partition_image_ref
|
|
wholedisk_image = False
|
|
|
|
@decorators.idempotent_id('ea85e19c-d8dc-4577-4d05-fbbbe4ce3f8c')
|
|
@utils.services('image', 'network')
|
|
def test_ip_access_to_server(self):
|
|
self.boot_and_verify_node()
|
|
|
|
|
|
class BaremetalIloIscsiWholediskHttpLink(
|
|
bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
api_microversion = '1.31' # to set the deploy_interface
|
|
driver = 'ilo'
|
|
deploy_interface = 'iscsi'
|
|
boot_interface = 'ilo-virtual-media'
|
|
image_ref = CONF.baremetal.whole_disk_image_url
|
|
image_checksum = CONF.baremetal.whole_disk_image_checksum
|
|
wholedisk_image = True
|
|
|
|
@decorators.idempotent_id('71ccf06f-45db-8f93-afd0-d4efae2bfd4e')
|
|
@utils.services('network')
|
|
def test_ip_access_to_server(self):
|
|
self.boot_and_verify_node()
|
|
|
|
|
|
class BaremetalIloIscsiPartitioned(bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
api_microversion = '1.31' # to set the deploy_interface
|
|
driver = 'ilo'
|
|
deploy_interface = 'iscsi'
|
|
boot_interface = 'ilo-virtual-media'
|
|
image_ref = CONF.baremetal.partition_image_ref
|
|
wholedisk_image = False
|
|
|
|
@decorators.idempotent_id('d926c683-4d05-8252-b9bb-35babbed6e86')
|
|
@utils.services('image', 'network')
|
|
def test_ip_access_to_server(self):
|
|
self.boot_and_verify_node()
|
|
|
|
|
|
class BaremetalIloPxeWholediskHttpLink(
|
|
bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
api_microversion = '1.31' # to set the deploy_interface
|
|
driver = 'ilo'
|
|
deploy_interface = 'direct'
|
|
boot_interface = 'ilo-pxe'
|
|
image_ref = CONF.baremetal.whole_disk_image_url
|
|
image_checksum = CONF.baremetal.whole_disk_image_checksum
|
|
wholedisk_image = True
|
|
|
|
@decorators.idempotent_id('d926c683-1a32-edbc-07dc-95cd74eefecb')
|
|
@utils.services('network')
|
|
def test_ip_access_to_server(self):
|
|
self.boot_and_verify_node()
|
|
|
|
|
|
class BaremetalIloPxePartitioned(bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
api_microversion = '1.31' # to set the deploy_interface
|
|
driver = 'ilo'
|
|
deploy_interface = 'direct'
|
|
boot_interface = 'ilo-pxe'
|
|
image_ref = CONF.baremetal.partition_image_ref
|
|
wholedisk_image = False
|
|
|
|
@decorators.idempotent_id('71ccf06f-07dc-4577-6869-1b1bfa423b9b')
|
|
@utils.services('image', 'network')
|
|
def test_ip_access_to_server(self):
|
|
self.boot_and_verify_node()
|
|
|
|
|
|
class BaremetalIloIPxeWholediskHttpLink(
|
|
bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
api_microversion = '1.31' # to set the deploy_interface
|
|
driver = 'ilo'
|
|
deploy_interface = 'direct'
|
|
boot_interface = 'ilo-ipxe'
|
|
image_ref = CONF.baremetal.whole_disk_image_url
|
|
image_checksum = CONF.baremetal.whole_disk_image_checksum
|
|
wholedisk_image = True
|
|
|
|
@decorators.idempotent_id('d926c683-1a32-edbc-07dc-95cd74eefecb')
|
|
@utils.services('network')
|
|
def test_ip_access_to_server(self):
|
|
self.boot_and_verify_node()
|
|
|
|
|
|
class BaremetalIlo5UefiHTTPSWholediskHttpsLink(
|
|
bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
api_microversion = '1.31' # to set the deploy_interface
|
|
driver = 'ilo5'
|
|
deploy_interface = 'direct'
|
|
boot_interface = 'ilo-uefi-https'
|
|
image_ref = CONF.baremetal.whole_disk_image_url
|
|
image_checksum = CONF.baremetal.whole_disk_image_checksum
|
|
wholedisk_image = True
|
|
|
|
@decorators.idempotent_id('d926c683-1a32-edbc-07dc-95cd74eefecb')
|
|
@utils.services('network')
|
|
def test_ip_access_to_server(self):
|
|
self.boot_and_verify_node()
|
|
|
|
|
|
class BaremetalRedfishDirectWholediskHttpLink(
|
|
bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
api_microversion = '1.31' # to set the deploy_interface
|
|
driver = 'redfish'
|
|
deploy_interface = 'direct'
|
|
boot_interface = 'redfish-virtual-media'
|
|
image_ref = CONF.baremetal.whole_disk_image_url
|
|
image_checksum = CONF.baremetal.whole_disk_image_checksum
|
|
wholedisk_image = True
|
|
|
|
@decorators.idempotent_id('113acd0a-9872-4631-b3ee-54da7e3bb262')
|
|
@utils.services('network')
|
|
def test_ip_access_to_server(self):
|
|
self.boot_and_verify_node()
|
|
|
|
|
|
class BaremetalRedfishIPxeWholediskHttpLink(
|
|
bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
api_microversion = '1.31' # to set the deploy_interface
|
|
driver = 'redfish'
|
|
deploy_interface = 'direct'
|
|
boot_interface = 'ipxe'
|
|
image_ref = CONF.baremetal.whole_disk_image_url
|
|
image_checksum = CONF.baremetal.whole_disk_image_checksum
|
|
wholedisk_image = True
|
|
|
|
@decorators.idempotent_id('113acd0a-9872-4631-b3ee-54da7e3bb262')
|
|
@utils.services('network')
|
|
def test_ip_access_to_server(self):
|
|
self.boot_and_verify_node()
|
|
|
|
|
|
class BaremetalRedfishDirectPxeWholedisk(
|
|
bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
mandatory_attr = ['driver']
|
|
api_microversion = '1.31' # to set the deploy_interface
|
|
driver = 'redfish'
|
|
image_ref = CONF.baremetal.whole_disk_image_ref
|
|
wholedisk_image = True
|
|
boot_interface = 'pxe'
|
|
deploy_interface = 'direct'
|
|
|
|
@classmethod
|
|
def skip_checks(cls):
|
|
super(BaremetalRedfishDirectPxeWholedisk, cls).skip_checks()
|
|
if CONF.baremetal_feature_enabled.ipxe_enabled:
|
|
skip_msg = ("Skipping the test case since ipxe is enabled")
|
|
raise cls.skipException(skip_msg)
|
|
|
|
@utils.services('image', 'network')
|
|
@decorators.idempotent_id('2bf34541-5514-4ea7-b073-7707d408ce99')
|
|
def test_deploy_node(self):
|
|
self.boot_and_verify_node()
|
|
|
|
|
|
class BaremetalIdracDirectIPxeWholedisk(
|
|
bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
mandatory_attr = ['driver']
|
|
api_microversion = '1.31' # to set the deploy_interface
|
|
driver = 'idrac'
|
|
image_ref = CONF.baremetal.whole_disk_image_ref
|
|
wholedisk_image = True
|
|
boot_interface = 'ipxe'
|
|
deploy_interface = 'direct'
|
|
|
|
@classmethod
|
|
def skip_checks(cls):
|
|
super(BaremetalIdracDirectIPxeWholedisk, cls).skip_checks()
|
|
if not CONF.baremetal_feature_enabled.ipxe_enabled:
|
|
skip_msg = ("Skipping the test case since ipxe is disabled")
|
|
raise cls.skipException(skip_msg)
|
|
|
|
@utils.services('image', 'network')
|
|
@decorators.idempotent_id('b467889b-aba4-4696-9e6f-4ef60a3f78a4')
|
|
def test_deploy_node(self):
|
|
self.boot_and_verify_node()
|
|
|
|
|
|
class BaremetalIdracDirectPxeWholedisk(
|
|
bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
mandatory_attr = ['driver']
|
|
api_microversion = '1.31' # to set the deploy_interface
|
|
driver = 'idrac'
|
|
image_ref = CONF.baremetal.whole_disk_image_ref
|
|
wholedisk_image = True
|
|
boot_interface = 'pxe'
|
|
deploy_interface = 'direct'
|
|
|
|
@classmethod
|
|
def skip_checks(cls):
|
|
super(BaremetalIdracDirectPxeWholedisk, cls).skip_checks()
|
|
if CONF.baremetal_feature_enabled.ipxe_enabled:
|
|
skip_msg = ("Skipping the test case since ipxe is enabled")
|
|
raise cls.skipException(skip_msg)
|
|
|
|
@utils.services('image', 'network')
|
|
@decorators.idempotent_id('20c0f2f4-723b-4d1e-a4f2-bea11ffb1513')
|
|
def test_deploy_node(self):
|
|
self.boot_and_verify_node()
|
|
|
|
|
|
class BaremetalIdracWSManDirectIPxeWholedisk(
|
|
BaremetalIdracDirectIPxeWholedisk):
|
|
power_interface = 'idrac-wsman'
|
|
management_interface = 'idrac-wsman'
|
|
|
|
|
|
class BaremetalIdracWSManDirectPxeWholedisk(
|
|
BaremetalIdracDirectPxeWholedisk):
|
|
power_interface = 'idrac-wsman'
|
|
management_interface = 'idrac-wsman'
|
|
|
|
|
|
class BaremetalIdracRedfishDirectIPxeWholedisk(
|
|
BaremetalIdracDirectIPxeWholedisk):
|
|
|
|
power_interface = 'idrac-redfish'
|
|
management_interface = 'idrac-redfish'
|
|
|
|
|
|
class BaremetalIdracRedfishDirectPxeWholedisk(
|
|
BaremetalIdracDirectPxeWholedisk):
|
|
|
|
power_interface = 'idrac-redfish'
|
|
management_interface = 'idrac-redfish'
|
|
|
|
|
|
class BaremetalIpmiDirectIPxeWholedisk(
|
|
bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
mandatory_attr = ['driver']
|
|
api_microversion = '1.31' # to set the deploy_interface
|
|
driver = 'ipmi'
|
|
image_ref = CONF.baremetal.whole_disk_image_ref
|
|
wholedisk_image = True
|
|
boot_interface = 'ipxe'
|
|
deploy_interface = 'direct'
|
|
|
|
@classmethod
|
|
def skip_checks(cls):
|
|
super(BaremetalIpmiDirectIPxeWholedisk, cls).skip_checks()
|
|
if not CONF.baremetal_feature_enabled.ipxe_enabled:
|
|
skip_msg = ("Skipping the test case since ipxe is disabled")
|
|
raise cls.skipException(skip_msg)
|
|
|
|
@utils.services('image', 'network')
|
|
@decorators.idempotent_id('9cd5a47b-ef96-4d64-9118-be467b24d1bf')
|
|
def test_deploy_node(self):
|
|
self.boot_and_verify_node()
|
|
|
|
|
|
class BaremetalIpmiDirectPxeWholedisk(
|
|
bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
mandatory_attr = ['driver']
|
|
api_microversion = '1.31' # to set the deploy_interface
|
|
driver = 'ipmi'
|
|
image_ref = CONF.baremetal.whole_disk_image_ref
|
|
wholedisk_image = True
|
|
boot_interface = 'pxe'
|
|
deploy_interface = 'direct'
|
|
|
|
@classmethod
|
|
def skip_checks(cls):
|
|
super(BaremetalIpmiDirectPxeWholedisk, cls).skip_checks()
|
|
if CONF.baremetal_feature_enabled.ipxe_enabled:
|
|
skip_msg = ("Skipping the test case since ipxe is enabled")
|
|
raise cls.skipException(skip_msg)
|
|
|
|
@utils.services('image', 'network')
|
|
@decorators.idempotent_id('d68a38aa-b731-403a-9d40-b3b49ea75e9b')
|
|
def test_deploy_node(self):
|
|
self.boot_and_verify_node()
|
|
|
|
|
|
class BaremetalIdracVirtualMediaWholedisk(
|
|
bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
mandatory_attr = ['driver', 'boot_interface']
|
|
api_microversion = '1.31' # to set the deploy_interface
|
|
driver = 'idrac'
|
|
boot_interface = 'idrac-redfish-virtual-media'
|
|
image_ref = CONF.baremetal.whole_disk_image_ref
|
|
wholedisk_image = True
|
|
deploy_interface = 'direct'
|
|
|
|
@decorators.idempotent_id('b0bc87a5-4324-4134-bd5f-4bb1cf549e5c')
|
|
@utils.services('image', 'network')
|
|
def test_deploy_virtual_media_boot(self):
|
|
self.boot_and_verify_node()
|
|
|
|
|
|
class BaremetalIdracSyncBootModeDirectWholedisk(
|
|
bsm.BaremetalStandaloneScenarioTest):
|
|
|
|
mandatory_attr = ['driver', 'power_interface', 'management_interface',
|
|
'bios_interface']
|
|
|
|
api_microversion = '1.40' # to get list_node_bios_settings
|
|
driver = 'idrac'
|
|
|
|
# NOTE: Image with UEFI support is necessary
|
|
image_ref = CONF.baremetal.whole_disk_image_ref
|
|
wholedisk_image = True
|
|
boot_interface = 'ipxe'
|
|
power_interface = 'idrac-redfish'
|
|
management_interface = 'idrac-redfish'
|
|
bios_interface = 'idrac-redfish'
|
|
deploy_interface = 'direct'
|
|
bios_mode = {'boot_mode': 'bios'}
|
|
uefi_mode = {'boot_mode': 'uefi'}
|
|
|
|
def _get_boot_mode_to_update(self):
|
|
_, bios_settings = self.baremetal_client.\
|
|
list_node_bios_settings(self.node['uuid'])
|
|
for attr_name in bios_settings['bios']:
|
|
if attr_name['name'] == 'BootMode':
|
|
if attr_name['value'] == 'Uefi':
|
|
boot_mode = self.bios_mode
|
|
else:
|
|
boot_mode = self.uefi_mode
|
|
return boot_mode
|
|
|
|
@decorators.idempotent_id('c2bebda2-fd27-4b10-9015-f7d877f0eb60')
|
|
@utils.services('image', 'network')
|
|
def test_sync_boot_mode(self):
|
|
boot_mode_path = '/instance_info/capabilities'
|
|
mode_to_update = self._get_boot_mode_to_update()
|
|
self.update_node(self.node['uuid'], [{'op': 'replace',
|
|
'path': boot_mode_path,
|
|
'value': mode_to_update}])
|
|
self.boot_and_verify_node()
|
|
if mode_to_update == self.uefi_mode:
|
|
mode_to_update = self.bios_mode
|
|
else:
|
|
mode_to_update = self.uefi_mode
|
|
self.update_node(self.node['uuid'], [{'op': 'replace',
|
|
'path': boot_mode_path,
|
|
'value': mode_to_update}])
|
|
self.set_node_provision_state(self.node['uuid'], 'rebuild')
|
|
self.wait_provisioning_state(self.node['uuid'], 'active',
|
|
timeout=CONF.baremetal.active_timeout,
|
|
interval=30)
|