17
17
PXE Driver and supporting meta-classes.
20
from oslo.utils import importutils
20
from oslo_utils import importutils
22
22
from ironic.common import exception
23
23
from ironic.common.i18n import _
24
24
from ironic.drivers import base
25
from ironic.drivers.modules.amt import management as amt_management
26
from ironic.drivers.modules.amt import power as amt_power
27
from ironic.drivers.modules.amt import vendor as amt_vendor
28
from ironic.drivers.modules import discoverd
25
29
from ironic.drivers.modules import iboot
26
30
from ironic.drivers.modules.ilo import deploy as ilo_deploy
31
from ironic.drivers.modules.ilo import inspect as ilo_inspect
27
32
from ironic.drivers.modules.ilo import management as ilo_management
28
33
from ironic.drivers.modules.ilo import power as ilo_power
29
34
from ironic.drivers.modules import ipminative
30
35
from ironic.drivers.modules import ipmitool
36
from ironic.drivers.modules.irmc import management as irmc_management
31
37
from ironic.drivers.modules.irmc import power as irmc_power
32
38
from ironic.drivers.modules import pxe
33
39
from ironic.drivers.modules import seamicro
34
40
from ironic.drivers.modules import snmp
35
41
from ironic.drivers.modules import ssh
42
from ironic.drivers.modules import virtualbox
36
43
from ironic.drivers import utils
51
58
self.deploy = pxe.PXEDeploy()
52
59
self.management = ipmitool.IPMIManagement()
53
60
self.vendor = pxe.VendorPassthru()
61
self.inspect = discoverd.DiscoverdInspect.create_if_enabled(
62
'PXEAndIPMIToolDriver')
56
65
class PXEAndSSHDriver(base.BaseDriver):
70
79
self.deploy = pxe.PXEDeploy()
71
80
self.management = ssh.SSHManagement()
72
81
self.vendor = pxe.VendorPassthru()
82
self.inspect = discoverd.DiscoverdInspect.create_if_enabled(
75
86
class PXEAndIPMINativeDriver(base.BaseDriver):
93
104
self.deploy = pxe.PXEDeploy()
94
105
self.management = ipminative.NativeIPMIManagement()
95
106
self.vendor = pxe.VendorPassthru()
107
self.inspect = discoverd.DiscoverdInspect.create_if_enabled(
108
'PXEAndIPMINativeDriver')
98
111
class PXEAndSeaMicroDriver(base.BaseDriver):
164
177
self.vendor = ilo_deploy.IloPXEVendorPassthru()
165
178
self.console = ilo_deploy.IloConsoleInterface()
166
179
self.management = ilo_management.IloManagement()
180
self.inspect = ilo_inspect.IloInspect()
169
183
class PXEAndSNMPDriver(base.BaseDriver):
207
221
self.power = irmc_power.IRMCPower()
208
222
self.console = ipmitool.IPMIShellinaboxConsole()
209
223
self.deploy = pxe.PXEDeploy()
210
self.management = ipmitool.IPMIManagement()
211
self.vendor = pxe.VendorPassthru()
224
self.management = irmc_management.IRMCManagement()
225
self.vendor = pxe.VendorPassthru()
228
class PXEAndVirtualBoxDriver(base.BaseDriver):
229
"""PXE + VirtualBox driver.
231
NOTE: This driver is meant only for testing environments.
233
This driver implements the `core` functionality, combining
234
:class:`ironic.drivers.virtualbox.VirtualBoxPower` for power on/off and
235
reboot of VirtualBox virtual machines, with :class:`ironic.driver.pxe.PXE`
236
for image deployment. Implementations are in those respective classes;
237
this class is merely the glue between them.
241
if not importutils.try_import('pyremotevbox'):
242
raise exception.DriverLoadError(
243
driver=self.__class__.__name__,
244
reason=_("Unable to import pyremotevbox library"))
245
self.power = virtualbox.VirtualBoxPower()
246
self.deploy = pxe.PXEDeploy()
247
self.management = virtualbox.VirtualBoxManagement()
248
self.vendor = pxe.VendorPassthru()
251
class PXEAndAMTDriver(base.BaseDriver):
254
This driver implements the `core` functionality, combining
255
:class:`ironic.drivers.amt.AMTPower` for power on/off and reboot with
256
:class:`ironic.driver.pxe.PXE` for image deployment. Implementations are in
257
those respective classes; this class is merely the glue between them.
261
if not importutils.try_import('pywsman'):
262
raise exception.DriverLoadError(
263
driver=self.__class__.__name__,
264
reason=_("Unable to import pywsman library"))
265
self.power = amt_power.AMTPower()
266
self.deploy = pxe.PXEDeploy()
267
self.management = amt_management.AMTManagement()
268
self.vendor = amt_vendor.AMTPXEVendorPassthru()