summaryrefslogtreecommitdiff
path: root/ironic
diff options
context:
space:
mode:
authorDmitry Tantsur <dtantsur@protonmail.com>2020-09-07 18:50:53 +0200
committerDmitry Tantsur <dtantsur@protonmail.com>2020-09-22 15:39:36 +0200
commitd8dccc8d06017e79f2b49afec069a18b3c7413fc (patch)
tree7b1301027f3ea4c257bf25bfe7f3916fe53ab601 /ironic
parented0ef6cf59b9d85096b4e897667524a6cdd5da4c (diff)
downloadironic-d8dccc8d06017e79f2b49afec069a18b3c7413fc.tar.gz
Deprecate the iscsi deploy interface
This change marks the iscsi deploy interface as deprecated and stops enabling it by default. An online data migration is provided for iscsi->direct, provided that: 1) the direct deploy is enabled, 2) image_download_source!=swift. The CI coverage for iscsi deploy is left only on standalone jobs. Story: #2008114 Task: #40830 Change-Id: I4a66401b24c49c705861e0745867b7fc706a7509
Diffstat (limited to 'ironic')
-rw-r--r--ironic/cmd/dbsync.py2
-rw-r--r--ironic/conf/default.py2
-rw-r--r--ironic/db/api.py12
-rw-r--r--ironic/db/sqlalchemy/api.py47
-rw-r--r--ironic/drivers/generic.py2
-rw-r--r--ironic/drivers/modules/iscsi_deploy.py2
-rw-r--r--ironic/tests/unit/common/test_driver_factory.py12
-rw-r--r--ironic/tests/unit/conductor/test_manager.py63
-rw-r--r--ironic/tests/unit/db/test_api.py62
-rw-r--r--ironic/tests/unit/drivers/modules/intel_ipmi/test_intel_ipmi.py3
-rw-r--r--ironic/tests/unit/drivers/test_drac.py12
-rw-r--r--ironic/tests/unit/drivers/test_generic.py7
-rw-r--r--ironic/tests/unit/drivers/test_ibmc.py4
-rw-r--r--ironic/tests/unit/drivers/test_ilo.py14
-rw-r--r--ironic/tests/unit/drivers/test_ipmi.py5
-rw-r--r--ironic/tests/unit/drivers/test_irmc.py11
-rw-r--r--ironic/tests/unit/drivers/test_redfish.py4
-rw-r--r--ironic/tests/unit/drivers/test_snmp.py4
-rw-r--r--ironic/tests/unit/drivers/test_xclarity.py2
19 files changed, 180 insertions, 90 deletions
diff --git a/ironic/cmd/dbsync.py b/ironic/cmd/dbsync.py
index 81524aa96..071d06a54 100644
--- a/ironic/cmd/dbsync.py
+++ b/ironic/cmd/dbsync.py
@@ -64,6 +64,8 @@ dbapi = db_api.get_instance()
# object, in case it is lazy loaded. The attribute will be accessed when needed
# by doing getattr on the object
ONLINE_MIGRATIONS = (
+ # Added in Victoria, remove when removing iscsi deploy.
+ (dbapi, 'migrate_from_iscsi_deploy'),
# NOTE(rloo): Don't remove this; it should always be last
(dbapi, 'update_to_latest_versions'),
)
diff --git a/ironic/conf/default.py b/ironic/conf/default.py
index 0e8a957c8..5cee6be31 100644
--- a/ironic/conf/default.py
+++ b/ironic/conf/default.py
@@ -111,7 +111,7 @@ driver_opts = [
cfg.StrOpt('default_console_interface',
help=_DEFAULT_IFACE_HELP.format('console')),
cfg.ListOpt('enabled_deploy_interfaces',
- default=['iscsi', 'direct'],
+ default=['direct'],
help=_ENABLED_IFACE_HELP.format('deploy')),
cfg.StrOpt('default_deploy_interface',
help=_DEFAULT_IFACE_HELP.format('deploy')),
diff --git a/ironic/db/api.py b/ironic/db/api.py
index 33561296e..48228773f 100644
--- a/ironic/db/api.py
+++ b/ironic/db/api.py
@@ -951,6 +951,18 @@ class Connection(object, metaclass=abc.ABCMeta):
"""
@abc.abstractmethod
+ def migrate_from_iscsi_deploy(self, context, max_count):
+ """Tries to migrate away from the iscsi deploy interface.
+
+ :param context: the admin context
+ :param max_count: The maximum number of objects to migrate. Must be
+ >= 0. If zero, all the objects will be migrated.
+ :returns: A 2-tuple, 1. the total number of objects that need to be
+ migrated (at the beginning of this call) and 2. the number
+ of migrated objects.
+ """
+
+ @abc.abstractmethod
def set_node_traits(self, node_id, traits, version):
"""Replace all of the node traits with specified list of traits.
diff --git a/ironic/db/sqlalchemy/api.py b/ironic/db/sqlalchemy/api.py
index 374898bdb..3e859226c 100644
--- a/ironic/db/sqlalchemy/api.py
+++ b/ironic/db/sqlalchemy/api.py
@@ -1527,6 +1527,53 @@ class Connection(api.Connection):
return total_to_migrate, total_migrated
+ @oslo_db_api.retry_on_deadlock
+ def migrate_from_iscsi_deploy(self, context, max_count, force=False):
+ """Tries to migrate away from the iscsi deploy interface.
+
+ :param context: the admin context
+ :param max_count: The maximum number of objects to migrate. Must be
+ >= 0. If zero, all the objects will be migrated.
+ :returns: A 2-tuple, 1. the total number of objects that need to be
+ migrated (at the beginning of this call) and 2. the number
+ of migrated objects.
+ """
+ # TODO(dtantsur): maybe change to force=True by default in W?
+ if not force:
+ if 'direct' not in CONF.enabled_deploy_interfaces:
+ LOG.warning('The direct deploy interface is not enabled, will '
+ 'not migrate nodes to it. Run with --option '
+ 'force=true to override.')
+ return 0, 0
+
+ if CONF.agent.image_download_source == 'swift':
+ LOG.warning('The direct deploy interface is using swift, will '
+ 'not migrate nodes to it. Run with --option '
+ 'force=true to override.')
+ return 0, 0
+
+ total_to_migrate = (model_query(models.Node)
+ .filter_by(deploy_interface='iscsi')
+ .count())
+ if not total_to_migrate:
+ return 0, 0
+
+ max_to_migrate = max_count or total_to_migrate
+
+ with _session_for_write():
+ query = (model_query(models.Node.id)
+ .filter_by(deploy_interface='iscsi')
+ .slice(0, max_to_migrate))
+ ids = [row[0] for row in query]
+
+ num_migrated = (model_query(models.Node)
+ .filter_by(deploy_interface='iscsi')
+ .filter(models.Node.id.in_(ids))
+ .update({'deploy_interface': 'direct'},
+ synchronize_session=False))
+
+ return total_to_migrate, num_migrated
+
@staticmethod
def _verify_max_traits_per_node(node_id, num_traits):
"""Verify that an operation would not exceed the per-node trait limit.
diff --git a/ironic/drivers/generic.py b/ironic/drivers/generic.py
index 599e1139c..956119df8 100644
--- a/ironic/drivers/generic.py
+++ b/ironic/drivers/generic.py
@@ -49,7 +49,7 @@ class GenericHardware(hardware_type.AbstractHardwareType):
@property
def supported_deploy_interfaces(self):
"""List of supported deploy interfaces."""
- return [iscsi_deploy.ISCSIDeploy, agent.AgentDeploy,
+ return [agent.AgentDeploy, iscsi_deploy.ISCSIDeploy,
ansible_deploy.AnsibleDeploy, pxe.PXERamdiskDeploy]
@property
diff --git a/ironic/drivers/modules/iscsi_deploy.py b/ironic/drivers/modules/iscsi_deploy.py
index c1f15d990..7e3687306 100644
--- a/ironic/drivers/modules/iscsi_deploy.py
+++ b/ironic/drivers/modules/iscsi_deploy.py
@@ -604,6 +604,8 @@ class ISCSIDeploy(agent_base.AgentDeployMixin, agent_base.AgentBaseMixin,
has_decomposed_deploy_steps = True
+ supported = False
+
def get_properties(self):
return agent_base.VENDOR_PROPERTIES
diff --git a/ironic/tests/unit/common/test_driver_factory.py b/ironic/tests/unit/common/test_driver_factory.py
index 682622eec..f63c0ee6a 100644
--- a/ironic/tests/unit/common/test_driver_factory.py
+++ b/ironic/tests/unit/common/test_driver_factory.py
@@ -282,22 +282,22 @@ class DefaultInterfaceTestCase(db_base.DbTestCase):
def test_calculated_with_one(self):
self.config(default_deploy_interface=None)
- self.config(enabled_deploy_interfaces=['direct'])
+ self.config(enabled_deploy_interfaces=['ansible'])
iface = driver_factory.default_interface(self.driver, 'deploy')
- self.assertEqual('direct', iface)
+ self.assertEqual('ansible', iface)
def test_calculated_with_two(self):
self.config(default_deploy_interface=None)
- self.config(enabled_deploy_interfaces=['iscsi', 'direct'])
+ self.config(enabled_deploy_interfaces=['ansible', 'direct'])
iface = driver_factory.default_interface(self.driver, 'deploy')
- self.assertEqual('iscsi', iface)
+ self.assertEqual('direct', iface)
def test_calculated_with_unsupported(self):
self.config(default_deploy_interface=None)
# manual-management doesn't support fake deploy
- self.config(enabled_deploy_interfaces=['fake', 'direct'])
+ self.config(enabled_deploy_interfaces=['fake', 'ansible'])
iface = driver_factory.default_interface(self.driver, 'deploy')
- self.assertEqual('direct', iface)
+ self.assertEqual('ansible', iface)
def test_calculated_no_answer(self):
# manual-management supports no power interfaces
diff --git a/ironic/tests/unit/conductor/test_manager.py b/ironic/tests/unit/conductor/test_manager.py
index 93e658568..a45fb8219 100644
--- a/ironic/tests/unit/conductor/test_manager.py
+++ b/ironic/tests/unit/conductor/test_manager.py
@@ -5777,29 +5777,38 @@ class ManagerTestProperties(mgr_utils.ServiceSetUpMixin, db_base.DbTestCase):
super(ManagerTestProperties, self).setUp()
self.service = manager.ConductorManager('test-host', 'test-topic')
- def _check_driver_properties(self, hw_type, expected):
+ def _check_driver_properties(self, hw_type, expected, agent_common=True,
+ pxe_common=True):
self._start_service()
properties = self.service.get_driver_properties(self.context, hw_type)
- self.assertEqual(sorted(expected), sorted(properties))
+ if agent_common:
+ expected.extend(['agent_verify_ca',
+ 'deploy_kernel', 'deploy_ramdisk',
+ 'deploy_forces_oob_reboot',
+ 'image_download_source',
+ 'image_http_proxy', 'image_https_proxy',
+ 'image_no_proxy'])
+ if pxe_common:
+ expected.extend(['force_persistent_boot_device',
+ 'rescue_kernel', 'rescue_ramdisk'])
+ self.assertCountEqual(expected, properties)
def test_driver_properties_fake(self):
expected = ['B1', 'B2']
- self._check_driver_properties("fake-hardware", expected)
+ self._check_driver_properties("fake-hardware", expected,
+ agent_common=False, pxe_common=False)
def test_driver_properties_ipmi(self):
self.config(enabled_hardware_types='ipmi',
enabled_power_interfaces=['ipmitool'],
enabled_management_interfaces=['ipmitool'],
enabled_console_interfaces=['ipmitool-socat'])
- expected = ['agent_verify_ca', 'ipmi_address', 'ipmi_terminal_port',
+ expected = ['ipmi_address', 'ipmi_terminal_port',
'ipmi_password', 'ipmi_port', 'ipmi_priv_level',
'ipmi_username', 'ipmi_bridging', 'ipmi_transit_channel',
'ipmi_transit_address', 'ipmi_target_channel',
'ipmi_target_address', 'ipmi_local_address',
- 'deploy_kernel', 'deploy_ramdisk',
- 'force_persistent_boot_device', 'ipmi_protocol_version',
- 'ipmi_force_boot_device', 'deploy_forces_oob_reboot',
- 'rescue_kernel', 'rescue_ramdisk',
+ 'ipmi_protocol_version', 'ipmi_force_boot_device',
'ipmi_disable_boot_timeout', 'ipmi_hex_kg_key',
'ipmi_cipher_suite']
self._check_driver_properties("ipmi", expected)
@@ -5807,18 +5816,14 @@ class ManagerTestProperties(mgr_utils.ServiceSetUpMixin, db_base.DbTestCase):
def test_driver_properties_snmp(self):
self.config(enabled_hardware_types='snmp',
enabled_power_interfaces=['snmp'])
- expected = ['agent_verify_ca', 'deploy_kernel', 'deploy_ramdisk',
- 'force_persistent_boot_device',
- 'rescue_kernel', 'rescue_ramdisk',
- 'snmp_driver', 'snmp_address', 'snmp_port', 'snmp_version',
+ expected = ['snmp_driver', 'snmp_address', 'snmp_port', 'snmp_version',
'snmp_community',
'snmp_community_read', 'snmp_community_write',
'snmp_security', 'snmp_outlet',
'snmp_user',
'snmp_context_engine_id', 'snmp_context_name',
'snmp_auth_key', 'snmp_auth_protocol',
- 'snmp_priv_key', 'snmp_priv_protocol',
- 'deploy_forces_oob_reboot']
+ 'snmp_priv_key', 'snmp_priv_protocol']
self._check_driver_properties("snmp", expected)
def test_driver_properties_ilo(self):
@@ -5828,14 +5833,17 @@ class ManagerTestProperties(mgr_utils.ServiceSetUpMixin, db_base.DbTestCase):
enabled_boot_interfaces=['ilo-virtual-media'],
enabled_inspect_interfaces=['ilo'],
enabled_console_interfaces=['ilo'])
- expected = ['agent_verify_ca', 'ilo_address', 'ilo_username',
+ expected = ['ilo_address', 'ilo_username',
'ilo_password', 'client_port', 'client_timeout',
'ilo_deploy_iso', 'console_port', 'ilo_change_password',
'ca_file', 'snmp_auth_user', 'snmp_auth_prot_password',
'snmp_auth_priv_password', 'snmp_auth_protocol',
- 'snmp_auth_priv_protocol', 'deploy_forces_oob_reboot',
- 'ilo_verify_ca']
- self._check_driver_properties("ilo", expected)
+ 'snmp_auth_priv_protocol', 'ilo_verify_ca']
+ self._check_driver_properties("ilo", expected, pxe_common=False)
+
+ def test_driver_properties_manual_management(self):
+ self.config(enabled_hardware_types=['manual-management'])
+ self._check_driver_properties('manual-management', [])
def test_driver_properties_fail(self):
self.service.init_host()
@@ -5846,25 +5854,6 @@ class ManagerTestProperties(mgr_utils.ServiceSetUpMixin, db_base.DbTestCase):
self.assertEqual(exception.DriverNotFound, exc.exc_info[0])
-@mgr_utils.mock_record_keepalive
-class ManagerTestHardwareTypeProperties(mgr_utils.ServiceSetUpMixin,
- db_base.DbTestCase):
-
- def _check_hardware_type_properties(self, hardware_type, expected):
- self.config(enabled_hardware_types=[hardware_type])
- self.hardware_type = driver_factory.get_hardware_type(hardware_type)
- self._start_service()
- properties = self.service.get_driver_properties(self.context,
- hardware_type)
- self.assertEqual(sorted(expected), sorted(properties))
-
- def test_hardware_type_properties_manual_management(self):
- expected = ['agent_verify_ca', 'deploy_kernel', 'deploy_ramdisk',
- 'force_persistent_boot_device', 'deploy_forces_oob_reboot',
- 'rescue_kernel', 'rescue_ramdisk']
- self._check_hardware_type_properties('manual-management', expected)
-
-
@mock.patch.object(waiters, 'wait_for_all', autospec=True)
@mock.patch.object(manager.ConductorManager, '_spawn_worker', autospec=True)
@mock.patch.object(manager.ConductorManager, '_sync_power_state_nodes_task',
diff --git a/ironic/tests/unit/db/test_api.py b/ironic/tests/unit/db/test_api.py
index f855e9c91..9252e1d59 100644
--- a/ironic/tests/unit/db/test_api.py
+++ b/ironic/tests/unit/db/test_api.py
@@ -237,3 +237,65 @@ class UpdateToLatestVersionsTestCase(base.DbTestCase):
for uuid in nodes:
node = self.dbapi.get_node_by_uuid(uuid)
self.assertEqual(self.node_ver, node.version)
+
+
+class MigrateFromIscsiTestCase(base.DbTestCase):
+
+ def setUp(self):
+ super(MigrateFromIscsiTestCase, self).setUp()
+ self.context = context.get_admin_context()
+ self.dbapi = db_api.get_instance()
+ self.config(enabled_deploy_interfaces='direct')
+
+ def test_empty_db(self):
+ self.assertEqual(
+ (0, 0), self.dbapi.migrate_from_iscsi_deploy(self.context, 10))
+
+ def test_already_direct_exists(self):
+ utils.create_test_node(deploy_interface='direct')
+ self.assertEqual(
+ (0, 0), self.dbapi.update_to_latest_versions(self.context, 10))
+
+ def test_migrate_by_2(self):
+ utils.create_test_node(deploy_interface='direct')
+ for _i in range(3):
+ uuid = uuidutils.generate_uuid()
+ utils.create_test_node(uuid=uuid, deploy_interface='iscsi')
+ self.assertEqual(
+ (3, 2), self.dbapi.migrate_from_iscsi_deploy(self.context, 2))
+ self.assertEqual(
+ (1, 1), self.dbapi.migrate_from_iscsi_deploy(self.context, 2))
+
+ def test_migrate_all(self):
+ utils.create_test_node(deploy_interface='direct')
+ for _i in range(3):
+ uuid = uuidutils.generate_uuid()
+ utils.create_test_node(uuid=uuid, deploy_interface='iscsi')
+ self.assertEqual(
+ (3, 3), self.dbapi.migrate_from_iscsi_deploy(self.context, 0))
+
+ def test_migration_impossible(self):
+ self.config(enabled_deploy_interfaces='iscsi')
+ for _i in range(3):
+ uuid = uuidutils.generate_uuid()
+ utils.create_test_node(uuid=uuid, deploy_interface='iscsi')
+ self.assertEqual(
+ (0, 0), self.dbapi.migrate_from_iscsi_deploy(self.context, 0))
+
+ def test_migration_impossible2(self):
+ self.config(image_download_source='swift', group='agent')
+ for _i in range(3):
+ uuid = uuidutils.generate_uuid()
+ utils.create_test_node(uuid=uuid, deploy_interface='iscsi')
+ self.assertEqual(
+ (0, 0), self.dbapi.migrate_from_iscsi_deploy(self.context, 0))
+
+ def test_force_migration(self):
+ self.config(enabled_deploy_interfaces='iscsi')
+ utils.create_test_node(deploy_interface='direct')
+ for _i in range(3):
+ uuid = uuidutils.generate_uuid()
+ utils.create_test_node(uuid=uuid, deploy_interface='iscsi')
+ self.assertEqual(
+ (3, 3), self.dbapi.migrate_from_iscsi_deploy(self.context, 0,
+ force=True))
diff --git a/ironic/tests/unit/drivers/modules/intel_ipmi/test_intel_ipmi.py b/ironic/tests/unit/drivers/modules/intel_ipmi/test_intel_ipmi.py
index 199bc7a39..266883973 100644
--- a/ironic/tests/unit/drivers/modules/intel_ipmi/test_intel_ipmi.py
+++ b/ironic/tests/unit/drivers/modules/intel_ipmi/test_intel_ipmi.py
@@ -14,7 +14,6 @@ from ironic.conductor import task_manager
from ironic.drivers.modules import agent
from ironic.drivers.modules.intel_ipmi import management as intel_management
from ironic.drivers.modules import ipmitool
-from ironic.drivers.modules import iscsi_deploy
from ironic.drivers.modules import noop
from ironic.drivers.modules import pxe
from ironic.drivers.modules.storage import cinder
@@ -47,7 +46,7 @@ class IntelIPMIHardwareTestCase(db_base.DbTestCase):
kwargs.get('boot', pxe.PXEBoot))
self.assertIsInstance(
task.driver.deploy,
- kwargs.get('deploy', iscsi_deploy.ISCSIDeploy))
+ kwargs.get('deploy', agent.AgentDeploy))
self.assertIsInstance(
task.driver.console,
kwargs.get('console', noop.NoConsole))
diff --git a/ironic/tests/unit/drivers/test_drac.py b/ironic/tests/unit/drivers/test_drac.py
index 8a551070b..a53bb76ca 100644
--- a/ironic/tests/unit/drivers/test_drac.py
+++ b/ironic/tests/unit/drivers/test_drac.py
@@ -19,7 +19,6 @@ from ironic.drivers.modules import agent
from ironic.drivers.modules import drac
from ironic.drivers.modules import inspector
from ironic.drivers.modules import ipxe
-from ironic.drivers.modules import iscsi_deploy
from ironic.drivers.modules.network import flat as flat_net
from ironic.drivers.modules import noop
from ironic.drivers.modules.storage import noop as noop_storage
@@ -56,7 +55,7 @@ class IDRACHardwareTestCase(db_base.DbTestCase):
kwargs.get('boot', ipxe.iPXEBoot))
self.assertIsInstance(
driver.deploy,
- kwargs.get('deploy', iscsi_deploy.ISCSIDeploy))
+ kwargs.get('deploy', agent.AgentDeploy))
self.assertIsInstance(
driver.management,
kwargs.get('management', drac.management.DracWSManManagement))
@@ -100,15 +99,6 @@ class IDRACHardwareTestCase(db_base.DbTestCase):
self._validate_interfaces(task.driver,
inspect=inspector.Inspector)
- def test_override_with_agent(self):
- node = obj_utils.create_test_node(self.context, driver='idrac',
- deploy_interface='direct',
- inspect_interface='inspector')
- with task_manager.acquire(self.context, node.id) as task:
- self._validate_interfaces(task.driver,
- deploy=agent.AgentDeploy,
- inspect=inspector.Inspector)
-
def test_override_with_raid(self):
for iface, impl in [('agent', agent.AgentRAID),
('no-raid', noop.NoRAID)]:
diff --git a/ironic/tests/unit/drivers/test_generic.py b/ironic/tests/unit/drivers/test_generic.py
index d1acb59b8..f2bc2623f 100644
--- a/ironic/tests/unit/drivers/test_generic.py
+++ b/ironic/tests/unit/drivers/test_generic.py
@@ -21,7 +21,6 @@ from ironic.drivers import base as driver_base
from ironic.drivers.modules import agent
from ironic.drivers.modules import fake
from ironic.drivers.modules import inspector
-from ironic.drivers.modules import iscsi_deploy
from ironic.drivers.modules import noop
from ironic.drivers.modules import noop_mgmt
from ironic.drivers.modules import pxe
@@ -45,7 +44,7 @@ class ManualManagementHardwareTestCase(db_base.DbTestCase):
noop_mgmt.NoopManagement)
self.assertIsInstance(task.driver.power, fake.FakePower)
self.assertIsInstance(task.driver.boot, pxe.PXEBoot)
- self.assertIsInstance(task.driver.deploy, iscsi_deploy.ISCSIDeploy)
+ self.assertIsInstance(task.driver.deploy, agent.AgentDeploy)
self.assertIsInstance(task.driver.inspect, noop.NoInspect)
self.assertIsInstance(task.driver.raid, noop.NoRAID)
@@ -70,10 +69,12 @@ class ManualManagementHardwareTestCase(db_base.DbTestCase):
expected_prop_keys = [
'agent_verify_ca', 'deploy_forces_oob_reboot',
'deploy_kernel', 'deploy_ramdisk',
+ 'image_download_source', 'image_http_proxy',
+ 'image_https_proxy', 'image_no_proxy',
'force_persistent_boot_device', 'rescue_kernel', 'rescue_ramdisk']
hardware_type = driver_factory.get_hardware_type("manual-management")
properties = hardware_type.get_properties()
- self.assertEqual(sorted(expected_prop_keys), sorted(properties))
+ self.assertCountEqual(expected_prop_keys, properties)
@mock.patch.object(driver_factory, 'default_interface', autospec=True)
def test_get_properties_none(self, mock_def_iface):
diff --git a/ironic/tests/unit/drivers/test_ibmc.py b/ironic/tests/unit/drivers/test_ibmc.py
index 7e1a9fe30..019b50be6 100644
--- a/ironic/tests/unit/drivers/test_ibmc.py
+++ b/ironic/tests/unit/drivers/test_ibmc.py
@@ -14,12 +14,12 @@
# Version 1.0.0
from ironic.conductor import task_manager
+from ironic.drivers.modules import agent
from ironic.drivers.modules.ibmc import management as ibmc_mgmt
from ironic.drivers.modules.ibmc import power as ibmc_power
from ironic.drivers.modules.ibmc import raid as ibmc_raid
from ironic.drivers.modules.ibmc import vendor as ibmc_vendor
from ironic.drivers.modules import inspector
-from ironic.drivers.modules import iscsi_deploy
from ironic.drivers.modules import noop
from ironic.drivers.modules import pxe
from ironic.tests.unit.db import base as db_base
@@ -46,7 +46,7 @@ class IBMCHardwareTestCase(db_base.DbTestCase):
ibmc_power.IBMCPower)
self.assertIsInstance(task.driver.boot, pxe.PXEBoot)
self.assertIsInstance(task.driver.console, noop.NoConsole)
- self.assertIsInstance(task.driver.deploy, iscsi_deploy.ISCSIDeploy)
+ self.assertIsInstance(task.driver.deploy, agent.AgentDeploy)
self.assertIsInstance(task.driver.raid, ibmc_raid.IbmcRAID)
self.assertIsInstance(task.driver.vendor, ibmc_vendor.IBMCVendor)
self.assertIsInstance(task.driver.inspect, inspector.Inspector)
diff --git a/ironic/tests/unit/drivers/test_ilo.py b/ironic/tests/unit/drivers/test_ilo.py
index 3e8526436..1b2e10dae 100644
--- a/ironic/tests/unit/drivers/test_ilo.py
+++ b/ironic/tests/unit/drivers/test_ilo.py
@@ -23,7 +23,6 @@ from ironic.drivers import ilo
from ironic.drivers.modules import agent
from ironic.drivers.modules.ilo import raid
from ironic.drivers.modules import inspector
-from ironic.drivers.modules import iscsi_deploy
from ironic.drivers.modules import noop
from ironic.tests.unit.db import base as db_base
from ironic.tests.unit.objects import utils as obj_utils
@@ -37,7 +36,7 @@ class IloHardwareTestCase(db_base.DbTestCase):
enabled_boot_interfaces=['ilo-virtual-media', 'ilo-pxe'],
enabled_bios_interfaces=['no-bios', 'ilo'],
enabled_console_interfaces=['ilo'],
- enabled_deploy_interfaces=['iscsi', 'direct'],
+ enabled_deploy_interfaces=['ansible', 'direct'],
enabled_inspect_interfaces=['ilo'],
enabled_management_interfaces=['ilo'],
enabled_power_interfaces=['ilo'],
@@ -56,7 +55,7 @@ class IloHardwareTestCase(db_base.DbTestCase):
self.assertIsInstance(task.driver.console,
ilo.console.IloConsoleInterface)
self.assertIsInstance(task.driver.deploy,
- iscsi_deploy.ISCSIDeploy)
+ agent.AgentDeploy)
self.assertIsInstance(task.driver.inspect,
ilo.inspect.IloInspect)
self.assertIsInstance(task.driver.management,
@@ -74,7 +73,6 @@ class IloHardwareTestCase(db_base.DbTestCase):
self.config(enabled_inspect_interfaces=['inspector', 'ilo'])
node = obj_utils.create_test_node(
self.context, driver='ilo',
- deploy_interface='direct',
inspect_interface='inspector',
raid_interface='agent',
vendor_interface='no-vendor')
@@ -109,7 +107,7 @@ class IloHardwareTestCase(db_base.DbTestCase):
self.assertIsInstance(task.driver.console,
ilo.console.IloConsoleInterface)
self.assertIsInstance(task.driver.deploy,
- iscsi_deploy.ISCSIDeploy)
+ agent.AgentDeploy)
self.assertIsInstance(task.driver.inspect,
ilo.inspect.IloInspect)
self.assertIsInstance(task.driver.management,
@@ -127,7 +125,6 @@ class IloHardwareTestCase(db_base.DbTestCase):
self.config(enabled_inspect_interfaces=['inspector', 'ilo'])
node = obj_utils.create_test_node(
self.context, driver='ilo',
- deploy_interface='direct',
rescue_interface='agent',
raid_interface='agent')
with task_manager.acquire(self.context, node.id) as task:
@@ -155,7 +152,6 @@ class IloHardwareTestCase(db_base.DbTestCase):
self.context, driver='ilo',
boot_interface='ilo-pxe',
bios_interface='no-bios',
- deploy_interface='direct',
raid_interface='agent')
with task_manager.acquire(self.context, node.id) as task:
self.assertIsInstance(task.driver.boot,
@@ -177,7 +173,7 @@ class Ilo5HardwareTestCase(db_base.DbTestCase):
self.config(enabled_hardware_types=['ilo5'],
enabled_boot_interfaces=['ilo-virtual-media', 'ilo-pxe'],
enabled_console_interfaces=['ilo'],
- enabled_deploy_interfaces=['iscsi', 'direct'],
+ enabled_deploy_interfaces=['ansible', 'direct'],
enabled_inspect_interfaces=['ilo'],
enabled_management_interfaces=['ilo5'],
enabled_power_interfaces=['ilo'],
@@ -193,7 +189,7 @@ class Ilo5HardwareTestCase(db_base.DbTestCase):
self.assertIsInstance(task.driver.console,
ilo.console.IloConsoleInterface)
self.assertIsInstance(task.driver.deploy,
- iscsi_deploy.ISCSIDeploy)
+ agent.AgentDeploy)
self.assertIsInstance(task.driver.inspect,
ilo.inspect.IloInspect)
self.assertIsInstance(task.driver.management,
diff --git a/ironic/tests/unit/drivers/test_ipmi.py b/ironic/tests/unit/drivers/test_ipmi.py
index 967694971..88cab808f 100644
--- a/ironic/tests/unit/drivers/test_ipmi.py
+++ b/ironic/tests/unit/drivers/test_ipmi.py
@@ -13,7 +13,6 @@
from ironic.conductor import task_manager
from ironic.drivers.modules import agent
from ironic.drivers.modules import ipmitool
-from ironic.drivers.modules import iscsi_deploy
from ironic.drivers.modules import noop
from ironic.drivers.modules import noop_mgmt
from ironic.drivers.modules import pxe
@@ -46,7 +45,7 @@ class IPMIHardwareTestCase(db_base.DbTestCase):
kwargs.get('boot', pxe.PXEBoot))
self.assertIsInstance(
task.driver.deploy,
- kwargs.get('deploy', iscsi_deploy.ISCSIDeploy))
+ kwargs.get('deploy', agent.AgentDeploy))
self.assertIsInstance(
task.driver.console,
kwargs.get('console', noop.NoConsole))
@@ -73,14 +72,12 @@ class IPMIHardwareTestCase(db_base.DbTestCase):
'ipmitool-socat'])
node = obj_utils.create_test_node(
self.context, driver='ipmi',
- deploy_interface='direct',
raid_interface='agent',
console_interface='ipmitool-shellinabox',
vendor_interface='no-vendor')
with task_manager.acquire(self.context, node.id) as task:
self._validate_interfaces(
task,
- deploy=agent.AgentDeploy,
console=ipmitool.IPMIShellinaboxConsole,
raid=agent.AgentRAID,
vendor=noop.NoVendor)
diff --git a/ironic/tests/unit/drivers/test_irmc.py b/ironic/tests/unit/drivers/test_irmc.py
index b5f15246f..64cd5b964 100644
--- a/ironic/tests/unit/drivers/test_irmc.py
+++ b/ironic/tests/unit/drivers/test_irmc.py
@@ -27,7 +27,6 @@ from ironic.drivers.modules import ipxe
from ironic.drivers.modules.irmc import bios as irmc_bios
from ironic.drivers.modules.irmc import boot as irmc_boot
from ironic.drivers.modules.irmc import raid
-from ironic.drivers.modules import iscsi_deploy
from ironic.drivers.modules import noop
from ironic.tests.unit.db import base as db_base
from ironic.tests.unit.objects import utils as obj_utils
@@ -43,7 +42,7 @@ class IRMCHardwareTestCase(db_base.DbTestCase):
self.config(enabled_hardware_types=['irmc'],
enabled_boot_interfaces=['irmc-virtual-media', 'ipxe'],
enabled_console_interfaces=['ipmitool-socat'],
- enabled_deploy_interfaces=['iscsi', 'direct'],
+ enabled_deploy_interfaces=['ansible', 'direct'],
enabled_inspect_interfaces=['irmc'],
enabled_management_interfaces=['irmc'],
enabled_power_interfaces=['irmc', 'ipmitool'],
@@ -59,7 +58,7 @@ class IRMCHardwareTestCase(db_base.DbTestCase):
self.assertIsInstance(task.driver.console,
ipmitool.IPMISocatConsole)
self.assertIsInstance(task.driver.deploy,
- iscsi_deploy.ISCSIDeploy)
+ agent.AgentDeploy)
self.assertIsInstance(task.driver.inspect,
irmc.inspect.IRMCInspect)
self.assertIsInstance(task.driver.management,
@@ -77,7 +76,6 @@ class IRMCHardwareTestCase(db_base.DbTestCase):
self.config(enabled_inspect_interfaces=['inspector', 'irmc'])
node = obj_utils.create_test_node(
self.context, driver='irmc',
- deploy_interface='direct',
inspect_interface='inspector',
raid_interface='agent')
with task_manager.acquire(self.context, node.id) as task:
@@ -101,7 +99,6 @@ class IRMCHardwareTestCase(db_base.DbTestCase):
def test_override_with_agent_rescue(self, check_share_fs_mounted_mock):
node = obj_utils.create_test_node(
self.context, driver='irmc',
- deploy_interface='direct',
rescue_interface='agent',
raid_interface='agent')
with task_manager.acquire(self.context, node.id) as task:
@@ -131,7 +128,7 @@ class IRMCHardwareTestCase(db_base.DbTestCase):
self.assertIsInstance(task.driver.console,
ipmitool.IPMISocatConsole)
self.assertIsInstance(task.driver.deploy,
- iscsi_deploy.ISCSIDeploy)
+ agent.AgentDeploy)
self.assertIsInstance(task.driver.inspect,
irmc.inspect.IRMCInspect)
self.assertIsInstance(task.driver.management,
@@ -147,7 +144,6 @@ class IRMCHardwareTestCase(db_base.DbTestCase):
check_share_fs_mounted_mock):
node = obj_utils.create_test_node(
self.context, driver='irmc',
- deploy_interface='direct',
rescue_interface='agent',
raid_interface='irmc')
with task_manager.acquire(self.context, node.id) as task:
@@ -172,7 +168,6 @@ class IRMCHardwareTestCase(db_base.DbTestCase):
check_share_fs_mounted_mock):
node = obj_utils.create_test_node(
self.context, driver='irmc',
- deploy_interface='direct',
rescue_interface='agent',
bios_interface='no-bios')
with task_manager.acquire(self.context, node.id) as task:
diff --git a/ironic/tests/unit/drivers/test_redfish.py b/ironic/tests/unit/drivers/test_redfish.py
index f2675b5c6..b692c6167 100644
--- a/ironic/tests/unit/drivers/test_redfish.py
+++ b/ironic/tests/unit/drivers/test_redfish.py
@@ -14,7 +14,7 @@
# under the License.
from ironic.conductor import task_manager
-from ironic.drivers.modules import iscsi_deploy
+from ironic.drivers.modules import agent
from ironic.drivers.modules import noop
from ironic.drivers.modules.redfish import boot as redfish_boot
from ironic.drivers.modules.redfish import inspect as redfish_inspect
@@ -46,6 +46,6 @@ class RedfishHardwareTestCase(db_base.DbTestCase):
redfish_power.RedfishPower)
self.assertIsInstance(task.driver.boot,
redfish_boot.RedfishVirtualMediaBoot)
- self.assertIsInstance(task.driver.deploy, iscsi_deploy.ISCSIDeploy)
+ self.assertIsInstance(task.driver.deploy, agent.AgentDeploy)
self.assertIsInstance(task.driver.console, noop.NoConsole)
self.assertIsInstance(task.driver.raid, noop.NoRAID)
diff --git a/ironic/tests/unit/drivers/test_snmp.py b/ironic/tests/unit/drivers/test_snmp.py
index 10692383c..385714b33 100644
--- a/ironic/tests/unit/drivers/test_snmp.py
+++ b/ironic/tests/unit/drivers/test_snmp.py
@@ -16,8 +16,8 @@
from unittest import mock
from ironic.conductor import task_manager
+from ironic.drivers.modules import agent
from ironic.drivers.modules import fake
-from ironic.drivers.modules import iscsi_deploy
from ironic.drivers.modules import noop
from ironic.drivers.modules import noop_mgmt
from ironic.drivers.modules import pxe
@@ -39,7 +39,7 @@ class SNMPHardwareTestCase(db_base.DbTestCase):
with task_manager.acquire(self.context, node.id) as task:
self.assertIsInstance(task.driver.power, snmp.SNMPPower)
self.assertIsInstance(task.driver.boot, pxe.PXEBoot)
- self.assertIsInstance(task.driver.deploy, iscsi_deploy.ISCSIDeploy)
+ self.assertIsInstance(task.driver.deploy, agent.AgentDeploy)
self.assertIsInstance(task.driver.management,
noop_mgmt.NoopManagement)
self.assertIsInstance(task.driver.console, noop.NoConsole)
diff --git a/ironic/tests/unit/drivers/test_xclarity.py b/ironic/tests/unit/drivers/test_xclarity.py
index e43eeec7b..9d7f9e207 100644
--- a/ironic/tests/unit/drivers/test_xclarity.py
+++ b/ironic/tests/unit/drivers/test_xclarity.py
@@ -18,7 +18,6 @@ Test class for XClarity Driver
from ironic.conductor import task_manager
from ironic.drivers.modules import agent
-from ironic.drivers.modules import iscsi_deploy
from ironic.drivers.modules import pxe
from ironic.drivers.xclarity import management as xc_management
from ironic.drivers.xclarity import power as xc_power
@@ -40,7 +39,6 @@ class XClarityHardwareTestCase(db_base.DbTestCase):
self.assertIsInstance(task.driver.boot,
pxe.PXEBoot)
self.assertIsInstance(task.driver.deploy,
- iscsi_deploy.ISCSIDeploy,
agent.AgentDeploy)
self.assertIsInstance(task.driver.management,
xc_management.XClarityManagement)