Allow enabling node auto-discovery on the undercloud
Implements: blueprint inspector-node-autodiscovery Change-Id: Ifa6f37de0e173744257931e7d13e2f98dc4513fa
This commit is contained in:
parent
2aa658588a
commit
350aeaff66
|
@ -503,6 +503,8 @@ ironic::inspector::ramdisk_collectors: {{INSPECTION_COLLECTORS}}
|
|||
ironic::inspector::additional_processing_hooks: 'extra_hardware'
|
||||
ironic::inspector::ramdisk_kernel_args: {{INSPECTION_KERNEL_ARGS}}
|
||||
ironic::inspector::ipxe_timeout: 60
|
||||
ironic::inspector::node_not_found_hook: {{INSPECTION_NODE_NOT_FOUND_HOOK}}
|
||||
ironic::inspector::discovery_default_driver: {{DISCOVERY_DEFAULT_DRIVER}}
|
||||
|
||||
# Ironic PXE driver
|
||||
ironic::drivers::pxe::ipxe_timeout: 60
|
||||
|
|
|
@ -343,6 +343,21 @@ class TestGenerateEnvironment(BaseTestCase):
|
|||
drivers = json.loads(env['ENABLED_DRIVERS'])
|
||||
self.assertEqual(sorted(drivers), ['pxe_drac', 'pxe_ilo',
|
||||
'pxe_ipmitool', 'pxe_ssh'])
|
||||
self.assertEqual(env['INSPECTION_NODE_NOT_FOUND_HOOK'], '')
|
||||
|
||||
def test_enabled_discovery(self):
|
||||
conf = config_fixture.Config()
|
||||
self.useFixture(conf)
|
||||
conf.config(enable_node_discovery=True)
|
||||
env = undercloud._generate_environment('.')
|
||||
# The list is generated from a set, so we can't rely on ordering.
|
||||
# Instead make sure that it looks like a valid list by parsing it.
|
||||
drivers = json.loads(env['ENABLED_DRIVERS'])
|
||||
# Discovery requires enabling the default driver, which is fake by
|
||||
# default
|
||||
self.assertEqual(sorted(drivers), ['fake', 'pxe_drac', 'pxe_ilo',
|
||||
'pxe_ipmitool', 'pxe_ssh'])
|
||||
self.assertEqual(env['INSPECTION_NODE_NOT_FOUND_HOOK'], 'enroll')
|
||||
|
||||
def test_generate_endpoints(self):
|
||||
env = undercloud._generate_environment('.')
|
||||
|
|
|
@ -267,6 +267,22 @@ _opts = [
|
|||
help=('Whether to support introspection of nodes that have '
|
||||
'UEFI-only firmware.')
|
||||
),
|
||||
cfg.BoolOpt('enable_node_discovery',
|
||||
default=False,
|
||||
help=('Makes ironic-inspector enroll any unknown node that '
|
||||
'PXE-boots introspection ramdisk in Ironic. By default, '
|
||||
'the "fake" driver is used for new nodes (it is '
|
||||
'automatically enabled when this option is set to True).'
|
||||
' Set discovery_default_driver to override. '
|
||||
'Introspection rules can also be used to specify driver '
|
||||
'information for newly enrolled nodes.')
|
||||
),
|
||||
cfg.StrOpt('discovery_default_driver',
|
||||
default='fake',
|
||||
help=('The default driver to use for newly discovered nodes '
|
||||
'(requires enable_node_discovery set to True). This '
|
||||
'driver is automatically added to enabled_drivers.')
|
||||
),
|
||||
cfg.BoolOpt('undercloud_debug',
|
||||
default=True,
|
||||
help=('Whether to enable the debug log level for Undercloud '
|
||||
|
@ -925,8 +941,15 @@ def _generate_environment(instack_root):
|
|||
instack_env['INSPECTION_KERNEL_ARGS'] = ' '.join(inspection_kernel_args)
|
||||
|
||||
# Ensure correct rendering of the list and uniqueness of the items
|
||||
enabled_drivers = set(CONF.enabled_drivers)
|
||||
if CONF.enable_node_discovery:
|
||||
enabled_drivers.add(CONF.discovery_default_driver)
|
||||
instack_env['INSPECTION_NODE_NOT_FOUND_HOOK'] = 'enroll'
|
||||
else:
|
||||
instack_env['INSPECTION_NODE_NOT_FOUND_HOOK'] = ''
|
||||
|
||||
instack_env['ENABLED_DRIVERS'] = (
|
||||
'[%s]' % ', '.join('"%s"' % drv for drv in set(CONF.enabled_drivers)))
|
||||
'[%s]' % ', '.join('"%s"' % drv for drv in set(enabled_drivers)))
|
||||
|
||||
instack_env['PUBLIC_INTERFACE_IP'] = instack_env['LOCAL_IP']
|
||||
instack_env['LOCAL_IP'] = instack_env['LOCAL_IP'].split('/')[0]
|
||||
|
|
|
@ -130,6 +130,19 @@
|
|||
# firmware. (boolean value)
|
||||
#inspection_enable_uefi = true
|
||||
|
||||
# Makes ironic-inspector enroll any unknown node that PXE-boots
|
||||
# introspection ramdisk in Ironic. By default, the "fake" driver is
|
||||
# used for new nodes (it is automatically enabled when this option is
|
||||
# set to True). Set discovery_default_driver to override.
|
||||
# Introspection rules can also be used to specify driver information
|
||||
# for newly enrolled nodes. (boolean value)
|
||||
#enable_node_discovery = false
|
||||
|
||||
# The default driver to use for newly discovered nodes (requires
|
||||
# enable_node_discovery set to True). This driver is automatically
|
||||
# added to enabled_drivers. (string value)
|
||||
#discovery_default_driver = fake
|
||||
|
||||
# Whether to enable the debug log level for Undercloud OpenStack
|
||||
# services. (boolean value)
|
||||
#undercloud_debug = true
|
||||
|
|
Loading…
Reference in New Issue