Remove agent vendor passthru from most drivers

This patch removes the deprecated agent lookup/heartbeat as vendor
passthru functionality from most of the drivers in following modules:
- ironic.drivers.agent
- ironic.drivers.pxe
- ironic.drivers.drac
- ironic.drivers.irmc

Some drivers are left untouched though:
- iLO and OneView drivers are a bit more complicated and will be fixed
  in follow-up patches
- iBoot, WoL and AMT drivers will be fixed in ironic-staging-drivers
  repo first and then removed from ironic tree.

Change-Id: Ia9ee46cda68ef823d1fe8e5ea03c1d5948810a50
Partial-Bug: #1640533
This commit is contained in:
Pavlo Shchelokovskyy 2016-11-15 14:00:24 +02:00 committed by Pavlo Shchelokovskyy
parent 32942aedea
commit 206e246d25
8 changed files with 51 additions and 104 deletions

View File

@ -32,7 +32,6 @@ from ironic.drivers.modules.ucs import management as ucs_mgmt
from ironic.drivers.modules.ucs import power as ucs_power
from ironic.drivers.modules import virtualbox
from ironic.drivers.modules import wol
from ironic.drivers import utils
class AgentAndIPMIToolDriver(base.BaseDriver):
@ -52,15 +51,7 @@ class AgentAndIPMIToolDriver(base.BaseDriver):
self.deploy = agent.AgentDeploy()
self.management = ipmitool.IPMIManagement()
self.console = ipmitool.IPMIShellinaboxConsole()
self.agent_vendor = agent.AgentVendorInterface()
self.ipmi_vendor = ipmitool.VendorPassthru()
self.mapping = {'send_raw': self.ipmi_vendor,
'bmc_reset': self.ipmi_vendor,
'heartbeat': self.agent_vendor}
self.driver_passthru_mapping = {'lookup': self.agent_vendor}
self.vendor = utils.MixinVendorInterface(
self.mapping,
driver_passthru_mapping=self.driver_passthru_mapping)
self.vendor = ipmitool.VendorPassthru()
self.raid = agent.AgentRAID()
self.inspect = inspector.Inspector.create_if_enabled(
'AgentAndIPMIToolDriver')
@ -105,16 +96,7 @@ class AgentAndIPMINativeDriver(base.BaseDriver):
self.deploy = agent.AgentDeploy()
self.management = ipminative.NativeIPMIManagement()
self.console = ipminative.NativeIPMIShellinaboxConsole()
self.agent_vendor = agent.AgentVendorInterface()
self.ipminative_vendor = ipminative.VendorPassthru()
self.mapping = {
'send_raw': self.ipminative_vendor,
'bmc_reset': self.ipminative_vendor,
'heartbeat': self.agent_vendor,
}
self.driver_passthru_mapping = {'lookup': self.agent_vendor}
self.vendor = utils.MixinVendorInterface(self.mapping,
self.driver_passthru_mapping)
self.vendor = ipminative.VendorPassthru()
self.raid = agent.AgentRAID()
self.inspect = inspector.Inspector.create_if_enabled(
'AgentAndIPMINativeDriver')
@ -140,7 +122,6 @@ class AgentAndSSHDriver(base.BaseDriver):
self.boot = pxe.PXEBoot()
self.deploy = agent.AgentDeploy()
self.management = ssh.SSHManagement()
self.vendor = agent.AgentVendorInterface()
self.raid = agent.AgentRAID()
self.inspect = inspector.Inspector.create_if_enabled(
'AgentAndSSHDriver')
@ -171,7 +152,6 @@ class AgentAndVirtualBoxDriver(base.BaseDriver):
self.boot = pxe.PXEBoot()
self.deploy = agent.AgentDeploy()
self.management = virtualbox.VirtualBoxManagement()
self.vendor = agent.AgentVendorInterface()
self.raid = agent.AgentRAID()
@ -219,7 +199,6 @@ class AgentAndUcsDriver(base.BaseDriver):
self.boot = pxe.PXEBoot()
self.deploy = agent.AgentDeploy()
self.management = ucs_mgmt.UcsManagement()
self.vendor = agent.AgentVendorInterface()
self.inspect = inspector.Inspector.create_if_enabled(
'AgentAndUcsDriver')
@ -244,7 +223,6 @@ class AgentAndCIMCDriver(base.BaseDriver):
self.boot = pxe.PXEBoot()
self.deploy = agent.AgentDeploy()
self.management = cimc_mgmt.CIMCManagement()
self.vendor = agent.AgentVendorInterface()
self.inspect = inspector.Inspector.create_if_enabled(
'AgentAndCIMCDriver')

View File

@ -27,9 +27,7 @@ from ironic.drivers.modules.drac import power
from ironic.drivers.modules.drac import raid
from ironic.drivers.modules.drac import vendor_passthru
from ironic.drivers.modules import inspector
from ironic.drivers.modules import iscsi_deploy
from ironic.drivers.modules import pxe
from ironic.drivers import utils
class PXEDracDriver(base.BaseDriver):
@ -46,18 +44,7 @@ class PXEDracDriver(base.BaseDriver):
self.deploy = deploy.DracDeploy()
self.management = management.DracManagement()
self.raid = raid.DracRAID()
self.iscsi_vendor = iscsi_deploy.VendorPassthru()
self.drac_vendor = vendor_passthru.DracVendorPassthru()
self.mapping = {'heartbeat': self.iscsi_vendor,
'get_bios_config': self.drac_vendor,
'set_bios_config': self.drac_vendor,
'commit_bios_config': self.drac_vendor,
'abandon_bios_config': self.drac_vendor,
'list_unfinished_jobs': self.drac_vendor,
}
self.driver_passthru_mapping = {'lookup': self.iscsi_vendor}
self.vendor = utils.MixinVendorInterface(self.mapping,
self.driver_passthru_mapping)
self.vendor = vendor_passthru.DracVendorPassthru()
self.inspect = drac_inspect.DracInspect()

View File

@ -50,7 +50,6 @@ class IRMCVirtualMediaIscsiDriver(base.BaseDriver):
self.deploy = iscsi_deploy.ISCSIDeploy()
self.console = ipmitool.IPMIShellinaboxConsole()
self.management = management.IRMCManagement()
self.vendor = iscsi_deploy.VendorPassthru()
self.inspect = inspect.IRMCInspect()
@ -75,5 +74,4 @@ class IRMCVirtualMediaAgentDriver(base.BaseDriver):
self.deploy = agent.AgentDeploy()
self.console = ipmitool.IPMIShellinaboxConsole()
self.management = management.IRMCManagement()
self.vendor = agent.AgentVendorInterface()
self.inspect = inspect.IRMCInspect()

View File

@ -52,7 +52,6 @@ from ironic.drivers.modules.ucs import management as ucs_mgmt
from ironic.drivers.modules.ucs import power as ucs_power
from ironic.drivers.modules import virtualbox
from ironic.drivers.modules import wol
from ironic.drivers import utils
class PXEAndIPMIToolDriver(base.BaseDriver):
@ -73,15 +72,7 @@ class PXEAndIPMIToolDriver(base.BaseDriver):
self.management = ipmitool.IPMIManagement()
self.inspect = inspector.Inspector.create_if_enabled(
'PXEAndIPMIToolDriver')
self.iscsi_vendor = iscsi_deploy.VendorPassthru()
self.ipmi_vendor = ipmitool.VendorPassthru()
self.mapping = {'send_raw': self.ipmi_vendor,
'bmc_reset': self.ipmi_vendor,
'heartbeat': self.iscsi_vendor}
self.driver_passthru_mapping = {'lookup': self.iscsi_vendor}
self.vendor = utils.MixinVendorInterface(
self.mapping,
driver_passthru_mapping=self.driver_passthru_mapping)
self.vendor = ipmitool.VendorPassthru()
self.raid = agent.AgentRAID()
@ -124,7 +115,6 @@ class PXEAndSSHDriver(base.BaseDriver):
self.boot = pxe.PXEBoot()
self.deploy = iscsi_deploy.ISCSIDeploy()
self.management = ssh.SSHManagement()
self.vendor = iscsi_deploy.VendorPassthru()
self.inspect = inspector.Inspector.create_if_enabled(
'PXEAndSSHDriver')
self.raid = agent.AgentRAID()
@ -154,16 +144,7 @@ class PXEAndIPMINativeDriver(base.BaseDriver):
self.boot = pxe.PXEBoot()
self.deploy = iscsi_deploy.ISCSIDeploy()
self.management = ipminative.NativeIPMIManagement()
self.iscsi_vendor = iscsi_deploy.VendorPassthru()
self.ipminative_vendor = ipminative.VendorPassthru()
self.mapping = {
'send_raw': self.ipminative_vendor,
'bmc_reset': self.ipminative_vendor,
'heartbeat': self.iscsi_vendor,
}
self.driver_passthru_mapping = {'lookup': self.iscsi_vendor}
self.vendor = utils.MixinVendorInterface(self.mapping,
self.driver_passthru_mapping)
self.vendor = ipminative.VendorPassthru()
self.inspect = inspector.Inspector.create_if_enabled(
'PXEAndIPMINativeDriver')
self.raid = agent.AgentRAID()
@ -191,14 +172,7 @@ class PXEAndSeaMicroDriver(base.BaseDriver):
self.boot = pxe.PXEBoot()
self.deploy = iscsi_deploy.ISCSIDeploy()
self.management = seamicro.Management()
self.seamicro_vendor = seamicro.VendorPassthru()
self.iscsi_vendor = iscsi_deploy.VendorPassthru()
self.mapping = {'heartbeat': self.iscsi_vendor,
'attach_volume': self.seamicro_vendor,
'set_node_vlan_id': self.seamicro_vendor}
self.driver_passthru_mapping = {'lookup': self.iscsi_vendor}
self.vendor = utils.MixinVendorInterface(self.mapping,
self.driver_passthru_mapping)
self.vendor = seamicro.VendorPassthru()
self.console = seamicro.ShellinaboxConsole()
@ -271,7 +245,6 @@ class PXEAndSNMPDriver(base.BaseDriver):
self.power = snmp.SNMPPower()
self.boot = pxe.PXEBoot()
self.deploy = iscsi_deploy.ISCSIDeploy()
self.vendor = iscsi_deploy.VendorPassthru()
# PDUs have no boot device management capability.
# Only PXE as a boot device is supported.
@ -296,7 +269,6 @@ class PXEAndIRMCDriver(base.BaseDriver):
self.boot = pxe.PXEBoot()
self.deploy = iscsi_deploy.ISCSIDeploy()
self.management = irmc_management.IRMCManagement()
self.vendor = iscsi_deploy.VendorPassthru()
self.inspect = irmc_inspect.IRMCInspect()
@ -324,7 +296,6 @@ class PXEAndVirtualBoxDriver(base.BaseDriver):
self.boot = pxe.PXEBoot()
self.deploy = iscsi_deploy.ISCSIDeploy()
self.management = virtualbox.VirtualBoxManagement()
self.vendor = iscsi_deploy.VendorPassthru()
self.raid = agent.AgentRAID()
@ -369,7 +340,6 @@ class PXEAndMSFTOCSDriver(base.BaseDriver):
self.boot = pxe.PXEBoot()
self.deploy = iscsi_deploy.ISCSIDeploy()
self.management = msftocs_management.MSFTOCSManagement()
self.vendor = iscsi_deploy.VendorPassthru()
class PXEAndUcsDriver(base.BaseDriver):
@ -391,7 +361,6 @@ class PXEAndUcsDriver(base.BaseDriver):
self.boot = pxe.PXEBoot()
self.deploy = iscsi_deploy.ISCSIDeploy()
self.management = ucs_mgmt.UcsManagement()
self.vendor = iscsi_deploy.VendorPassthru()
self.inspect = inspector.Inspector.create_if_enabled(
'PXEAndUcsDriver')
@ -415,7 +384,6 @@ class PXEAndCIMCDriver(base.BaseDriver):
self.boot = pxe.PXEBoot()
self.deploy = iscsi_deploy.ISCSIDeploy()
self.management = cimc_mgmt.CIMCManagement()
self.vendor = iscsi_deploy.VendorPassthru()
self.inspect = inspector.Inspector.create_if_enabled(
'PXEAndCIMCDriver')

View File

@ -28,7 +28,6 @@ from ironic.drivers.modules import iboot
from ironic.drivers.modules import ipmitool
from ironic.drivers.modules import pxe
from ironic.drivers.modules import wol
from ironic.drivers import utils
from ironic.tests import base
@ -42,10 +41,7 @@ class AgentAndIPMIToolDriverTestCase(base.TestCase):
self.assertIsInstance(driver.boot, pxe.PXEBoot)
self.assertIsInstance(driver.deploy, agent_module.AgentDeploy)
self.assertIsInstance(driver.management, ipmitool.IPMIManagement)
self.assertIsInstance(driver.agent_vendor,
agent_module.AgentVendorInterface)
self.assertIsInstance(driver.ipmi_vendor, ipmitool.VendorPassthru)
self.assertIsInstance(driver.vendor, utils.MixinVendorInterface)
self.assertIsInstance(driver.vendor, ipmitool.VendorPassthru)
self.assertIsInstance(driver.raid, agent_module.AgentRAID)
@ -59,10 +55,7 @@ class AgentAndIPMIToolAndSocatDriverTestCase(base.TestCase):
self.assertIsInstance(driver.boot, pxe.PXEBoot)
self.assertIsInstance(driver.deploy, agent_module.AgentDeploy)
self.assertIsInstance(driver.management, ipmitool.IPMIManagement)
self.assertIsInstance(driver.agent_vendor,
agent_module.AgentVendorInterface)
self.assertIsInstance(driver.ipmi_vendor, ipmitool.VendorPassthru)
self.assertIsInstance(driver.vendor, utils.MixinVendorInterface)
self.assertIsInstance(driver.vendor, ipmitool.VendorPassthru)
self.assertIsInstance(driver.raid, agent_module.AgentRAID)

View File

@ -48,7 +48,6 @@ class IRMCVirtualMediaIscsiTestCase(testtools.TestCase):
irmc.ipmitool.IPMIShellinaboxConsole)
self.assertIsInstance(driver.management,
irmc.management.IRMCManagement)
self.assertIsInstance(driver.vendor, iscsi_deploy.VendorPassthru)
self.assertIsInstance(driver.inspect, irmc.inspect.IRMCInspect)
@mock.patch.object(irmc.importutils, 'try_import')
@ -91,7 +90,6 @@ class IRMCVirtualMediaAgentTestCase(testtools.TestCase):
irmc.ipmitool.IPMIShellinaboxConsole)
self.assertIsInstance(driver.management,
irmc.management.IRMCManagement)
self.assertIsInstance(driver.vendor, irmc.agent.AgentVendorInterface)
self.assertIsInstance(driver.inspect, irmc.inspect.IRMCInspect)
@mock.patch.object(irmc.importutils, 'try_import')

View File

@ -31,6 +31,7 @@ from ironic.drivers.modules.ilo import console as ilo_console
from ironic.drivers.modules.ilo import inspect as ilo_inspect
from ironic.drivers.modules.ilo import management as ilo_management
from ironic.drivers.modules.ilo import power as ilo_power
from ironic.drivers.modules.ilo import vendor as ilo_vendor
from ironic.drivers.modules import ipminative
from ironic.drivers.modules import ipmitool
from ironic.drivers.modules.irmc import management as irmc_management
@ -47,7 +48,6 @@ from ironic.drivers.modules.ucs import power as ucs_power
from ironic.drivers.modules import virtualbox
from ironic.drivers.modules import wol
from ironic.drivers import pxe
from ironic.drivers import utils
class PXEDriversTestCase(testtools.TestCase):
@ -61,8 +61,7 @@ class PXEDriversTestCase(testtools.TestCase):
self.assertIsInstance(driver.deploy, iscsi_deploy.ISCSIDeploy)
self.assertIsInstance(driver.management, ipmitool.IPMIManagement)
self.assertIsNone(driver.inspect)
# TODO(rameshg87): Need better way of asserting the routes.
self.assertIsInstance(driver.vendor, utils.MixinVendorInterface)
self.assertIsInstance(driver.vendor, ipmitool.VendorPassthru)
self.assertIsInstance(driver.raid, agent.AgentRAID)
def test_pxe_ipmitool_socat_driver(self):
@ -74,8 +73,7 @@ class PXEDriversTestCase(testtools.TestCase):
self.assertIsInstance(driver.deploy, iscsi_deploy.ISCSIDeploy)
self.assertIsInstance(driver.management, ipmitool.IPMIManagement)
self.assertIsNone(driver.inspect)
# TODO(rameshg87): Need better way of asserting the routes.
self.assertIsInstance(driver.vendor, utils.MixinVendorInterface)
self.assertIsInstance(driver.vendor, ipmitool.VendorPassthru)
self.assertIsInstance(driver.raid, agent.AgentRAID)
def test_pxe_ssh_driver(self):
@ -85,7 +83,6 @@ class PXEDriversTestCase(testtools.TestCase):
self.assertIsInstance(driver.boot, pxe_module.PXEBoot)
self.assertIsInstance(driver.deploy, iscsi_deploy.ISCSIDeploy)
self.assertIsInstance(driver.management, ssh.SSHManagement)
self.assertIsInstance(driver.vendor, iscsi_deploy.VendorPassthru)
self.assertIsNone(driver.inspect)
self.assertIsInstance(driver.raid, agent.AgentRAID)
@ -103,8 +100,7 @@ class PXEDriversTestCase(testtools.TestCase):
self.assertIsInstance(driver.deploy, iscsi_deploy.ISCSIDeploy)
self.assertIsInstance(driver.management,
ipminative.NativeIPMIManagement)
# TODO(rameshg87): Need better way of asserting the routes.
self.assertIsInstance(driver.vendor, utils.MixinVendorInterface)
self.assertIsInstance(driver.vendor, ipminative.VendorPassthru)
self.assertIsNone(driver.inspect)
self.assertIsInstance(driver.raid, agent.AgentRAID)
@ -127,9 +123,7 @@ class PXEDriversTestCase(testtools.TestCase):
self.assertIsInstance(driver.boot, pxe_module.PXEBoot)
self.assertIsInstance(driver.deploy, iscsi_deploy.ISCSIDeploy)
self.assertIsInstance(driver.management, seamicro.Management)
self.assertIsInstance(driver.seamicro_vendor, seamicro.VendorPassthru)
self.assertIsInstance(driver.iscsi_vendor, iscsi_deploy.VendorPassthru)
self.assertIsInstance(driver.vendor, utils.MixinVendorInterface)
self.assertIsInstance(driver.vendor, seamicro.VendorPassthru)
self.assertIsInstance(driver.console, seamicro.ShellinaboxConsole)
@mock.patch.object(pxe.importutils, 'try_import', spec_set=True,
@ -170,7 +164,7 @@ class PXEDriversTestCase(testtools.TestCase):
self.assertIsInstance(driver.power, ilo_power.IloPower)
self.assertIsInstance(driver.boot, pxe_module.PXEBoot)
self.assertIsInstance(driver.deploy, iscsi_deploy.ISCSIDeploy)
self.assertIsInstance(driver.vendor, iscsi_deploy.VendorPassthru)
self.assertIsInstance(driver.vendor, ilo_vendor.VendorPassthru)
self.assertIsInstance(driver.console,
ilo_console.IloConsoleInterface)
self.assertIsInstance(driver.management,
@ -196,7 +190,6 @@ class PXEDriversTestCase(testtools.TestCase):
self.assertIsInstance(driver.power, snmp.SNMPPower)
self.assertIsInstance(driver.boot, pxe_module.PXEBoot)
self.assertIsInstance(driver.deploy, iscsi_deploy.ISCSIDeploy)
self.assertIsInstance(driver.vendor, iscsi_deploy.VendorPassthru)
self.assertIsNone(driver.management)
@mock.patch.object(pxe.importutils, 'try_import', spec_set=True,
@ -220,7 +213,6 @@ class PXEDriversTestCase(testtools.TestCase):
self.assertIsInstance(driver.deploy, iscsi_deploy.ISCSIDeploy)
self.assertIsInstance(driver.management,
irmc_management.IRMCManagement)
self.assertIsInstance(driver.vendor, iscsi_deploy.VendorPassthru)
@mock.patch.object(pxe.importutils, 'try_import', spec_set=True,
autospec=True)
@ -242,7 +234,6 @@ class PXEDriversTestCase(testtools.TestCase):
self.assertIsInstance(driver.deploy, iscsi_deploy.ISCSIDeploy)
self.assertIsInstance(driver.management,
virtualbox.VirtualBoxManagement)
self.assertIsInstance(driver.vendor, iscsi_deploy.VendorPassthru)
self.assertIsInstance(driver.raid, agent.AgentRAID)
@mock.patch.object(pxe.importutils, 'try_import', spec_set=True,
@ -287,7 +278,6 @@ class PXEDriversTestCase(testtools.TestCase):
self.assertIsInstance(driver.deploy, iscsi_deploy.ISCSIDeploy)
self.assertIsInstance(driver.management,
msftocs_management.MSFTOCSManagement)
self.assertIsInstance(driver.vendor, iscsi_deploy.VendorPassthru)
@mock.patch.object(pxe.importutils, 'try_import', spec_set=True,
autospec=True)
@ -301,7 +291,6 @@ class PXEDriversTestCase(testtools.TestCase):
self.assertIsInstance(driver.deploy, iscsi_deploy.ISCSIDeploy)
self.assertIsInstance(driver.management,
ucs_management.UcsManagement)
self.assertIsInstance(driver.vendor, iscsi_deploy.VendorPassthru)
@mock.patch.object(pxe.importutils, 'try_import', spec_set=True,
autospec=True)
@ -323,7 +312,6 @@ class PXEDriversTestCase(testtools.TestCase):
self.assertIsInstance(driver.deploy, iscsi_deploy.ISCSIDeploy)
self.assertIsInstance(driver.management,
cimc_management.CIMCManagement)
self.assertIsInstance(driver.vendor, iscsi_deploy.VendorPassthru)
@mock.patch.object(pxe.importutils, 'try_import', spec_set=True,
autospec=True)

View File

@ -0,0 +1,37 @@
---
features:
- |
Agent lookup/heartbeat as vendor passthru is removed from most of
in-tree ironic drivers. Affected drivers are
* agent_ipmitool
* agent_ipmitool_socat
* agent_ipminative
* agent_irmc
* agent_ssh
* agent_vbox
* agent_ucs
* pxe_agent_cimc
* pxe_ipmitool
* pxe_ipmitool_socat
* pxe_ssh
* pxe_ipminative
* pxe_seamicro
* pxe_snmp
* pxe_irmc
* pxe_vbox
* pxe_msftocs
* pxe_ucs
* pxe_iscsi_cimc
* pxe_drac
* pxe_drac_inspector
* iscsi_irmc
All the other vendor passthru methods are left in place if the
driver had them.
upgrade:
- Agent lookup/heartbeat as vendor passthru is removed from ironic.
That means that most in-tree drivers relying on Ironic Python Agent (IPA)
lookup/heartbeat functionality become incompatible with IPA < 1.5.0.
Operators are required to update their IPA-based deploy ramdisks to
contain IPA >= 1.5.0.