Centralize config options - [pxe]
Nova style refactor of config options in Ironic. Change-Id: I99f954dcc0097fd62b8c6b538bd1577a09e71a35 Partial-Bug: #1561100
This commit is contained in:
parent
3d279ed0f3
commit
91af2530f1
@ -37,6 +37,7 @@ from ironic.conf import metrics
|
|||||||
from ironic.conf import metrics_statsd
|
from ironic.conf import metrics_statsd
|
||||||
from ironic.conf import neutron
|
from ironic.conf import neutron
|
||||||
from ironic.conf import oneview
|
from ironic.conf import oneview
|
||||||
|
from ironic.conf import pxe
|
||||||
from ironic.conf import seamicro
|
from ironic.conf import seamicro
|
||||||
from ironic.conf import service_catalog
|
from ironic.conf import service_catalog
|
||||||
from ironic.conf import snmp
|
from ironic.conf import snmp
|
||||||
@ -68,6 +69,7 @@ metrics.register_opts(CONF)
|
|||||||
metrics_statsd.register_opts(CONF)
|
metrics_statsd.register_opts(CONF)
|
||||||
neutron.register_opts(CONF)
|
neutron.register_opts(CONF)
|
||||||
oneview.register_opts(CONF)
|
oneview.register_opts(CONF)
|
||||||
|
pxe.register_opts(CONF)
|
||||||
seamicro.register_opts(CONF)
|
seamicro.register_opts(CONF)
|
||||||
service_catalog.register_opts(CONF)
|
service_catalog.register_opts(CONF)
|
||||||
snmp.register_opts(CONF)
|
snmp.register_opts(CONF)
|
||||||
|
@ -15,7 +15,6 @@ import itertools
|
|||||||
import ironic.drivers.modules.amt.common
|
import ironic.drivers.modules.amt.common
|
||||||
import ironic.drivers.modules.amt.power
|
import ironic.drivers.modules.amt.power
|
||||||
import ironic.drivers.modules.iscsi_deploy
|
import ironic.drivers.modules.iscsi_deploy
|
||||||
import ironic.drivers.modules.pxe
|
|
||||||
|
|
||||||
_default_opt_lists = [
|
_default_opt_lists = [
|
||||||
ironic.conf.default.api_opts,
|
ironic.conf.default.api_opts,
|
||||||
@ -57,9 +56,7 @@ _opts = [
|
|||||||
('metrics_statsd', ironic.conf.metrics_statsd.opts),
|
('metrics_statsd', ironic.conf.metrics_statsd.opts),
|
||||||
('neutron', ironic.conf.neutron.list_opts()),
|
('neutron', ironic.conf.neutron.list_opts()),
|
||||||
('oneview', ironic.conf.oneview.opts),
|
('oneview', ironic.conf.oneview.opts),
|
||||||
('pxe', itertools.chain(
|
('pxe', ironic.conf.pxe.opts),
|
||||||
ironic.drivers.modules.iscsi_deploy.pxe_opts,
|
|
||||||
ironic.drivers.modules.pxe.pxe_opts)),
|
|
||||||
('seamicro', ironic.conf.seamicro.opts),
|
('seamicro', ironic.conf.seamicro.opts),
|
||||||
('service_catalog', ironic.conf.service_catalog.list_opts()),
|
('service_catalog', ironic.conf.service_catalog.list_opts()),
|
||||||
('snmp', ironic.conf.snmp.opts),
|
('snmp', ironic.conf.snmp.opts),
|
||||||
|
103
ironic/conf/pxe.py
Normal file
103
ironic/conf/pxe.py
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
# Copyright 2016 Intel Corporation
|
||||||
|
# Copyright 2013 Hewlett-Packard Development Company, L.P.
|
||||||
|
# All Rights Reserved.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
from oslo_config import cfg
|
||||||
|
|
||||||
|
from ironic.common.i18n import _
|
||||||
|
|
||||||
|
opts = [
|
||||||
|
cfg.StrOpt('pxe_append_params',
|
||||||
|
default='nofb nomodeset vga=normal',
|
||||||
|
help=_('Additional append parameters for baremetal PXE boot.')),
|
||||||
|
cfg.StrOpt('default_ephemeral_format',
|
||||||
|
default='ext4',
|
||||||
|
help=_('Default file system format for ephemeral partition, '
|
||||||
|
'if one is created.')),
|
||||||
|
cfg.StrOpt('images_path',
|
||||||
|
default='/var/lib/ironic/images/',
|
||||||
|
help=_('On the ironic-conductor node, directory where images '
|
||||||
|
'are stored on disk.')),
|
||||||
|
cfg.StrOpt('instance_master_path',
|
||||||
|
default='/var/lib/ironic/master_images',
|
||||||
|
help=_('On the ironic-conductor node, directory where master '
|
||||||
|
'instance images are stored on disk. '
|
||||||
|
'Setting to <None> disables image caching.')),
|
||||||
|
cfg.IntOpt('image_cache_size',
|
||||||
|
default=20480,
|
||||||
|
help=_('Maximum size (in MiB) of cache for master images, '
|
||||||
|
'including those in use.')),
|
||||||
|
# 10080 here is 1 week - 60*24*7. It is entirely arbitrary in the absence
|
||||||
|
# of a facility to disable the ttl entirely.
|
||||||
|
cfg.IntOpt('image_cache_ttl',
|
||||||
|
default=10080,
|
||||||
|
help=_('Maximum TTL (in minutes) for old master images in '
|
||||||
|
'cache.')),
|
||||||
|
cfg.StrOpt('pxe_config_template',
|
||||||
|
default=os.path.join(
|
||||||
|
'$pybasedir', 'drivers/modules/pxe_config.template'),
|
||||||
|
help=_('On ironic-conductor node, template file for PXE '
|
||||||
|
'configuration.')),
|
||||||
|
cfg.StrOpt('uefi_pxe_config_template',
|
||||||
|
default=os.path.join(
|
||||||
|
'$pybasedir',
|
||||||
|
'drivers/modules/elilo_efi_pxe_config.template'),
|
||||||
|
help=_('On ironic-conductor node, template file for PXE '
|
||||||
|
'configuration for UEFI boot loader.')),
|
||||||
|
cfg.StrOpt('tftp_server',
|
||||||
|
default='$my_ip',
|
||||||
|
help=_("IP address of ironic-conductor node's TFTP server.")),
|
||||||
|
cfg.StrOpt('tftp_root',
|
||||||
|
default='/tftpboot',
|
||||||
|
help=_("ironic-conductor node's TFTP root path. The "
|
||||||
|
"ironic-conductor must have read/write access to this "
|
||||||
|
"path.")),
|
||||||
|
cfg.StrOpt('tftp_master_path',
|
||||||
|
default='/tftpboot/master_images',
|
||||||
|
help=_('On ironic-conductor node, directory where master TFTP '
|
||||||
|
'images are stored on disk. '
|
||||||
|
'Setting to <None> disables image caching.')),
|
||||||
|
# NOTE(dekehn): Additional boot files options may be created in the event
|
||||||
|
# other architectures require different boot files.
|
||||||
|
cfg.StrOpt('pxe_bootfile_name',
|
||||||
|
default='pxelinux.0',
|
||||||
|
help=_('Bootfile DHCP parameter.')),
|
||||||
|
cfg.StrOpt('uefi_pxe_bootfile_name',
|
||||||
|
default='elilo.efi',
|
||||||
|
help=_('Bootfile DHCP parameter for UEFI boot mode.')),
|
||||||
|
cfg.BoolOpt('ipxe_enabled',
|
||||||
|
default=False,
|
||||||
|
help=_('Enable iPXE boot.')),
|
||||||
|
cfg.StrOpt('ipxe_boot_script',
|
||||||
|
default=os.path.join(
|
||||||
|
'$pybasedir', 'drivers/modules/boot.ipxe'),
|
||||||
|
help=_('On ironic-conductor node, the path to the main iPXE '
|
||||||
|
'script file.')),
|
||||||
|
cfg.IntOpt('ipxe_timeout',
|
||||||
|
default=0,
|
||||||
|
help=_('Timeout value (in seconds) for downloading an image '
|
||||||
|
'via iPXE. Defaults to 0 (no timeout)')),
|
||||||
|
cfg.StrOpt('ip_version',
|
||||||
|
default='4',
|
||||||
|
choices=['4', '6'],
|
||||||
|
help=_('The IP version that will be used for PXE booting. '
|
||||||
|
'Defaults to 4. EXPERIMENTAL')),
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def register_opts(conf):
|
||||||
|
conf.register_opts(opts, group='pxe')
|
@ -30,6 +30,7 @@ from ironic.common import states
|
|||||||
from ironic.common import utils
|
from ironic.common import utils
|
||||||
from ironic.conductor import task_manager
|
from ironic.conductor import task_manager
|
||||||
from ironic.conductor import utils as manager_utils
|
from ironic.conductor import utils as manager_utils
|
||||||
|
from ironic.conf import CONF
|
||||||
from ironic.drivers import base
|
from ironic.drivers import base
|
||||||
from ironic.drivers.modules import agent_base_vendor
|
from ironic.drivers.modules import agent_base_vendor
|
||||||
from ironic.drivers.modules import deploy_utils
|
from ironic.drivers.modules import deploy_utils
|
||||||
@ -39,40 +40,6 @@ LOG = logging.getLogger(__name__)
|
|||||||
|
|
||||||
METRICS = metrics_utils.get_metrics_logger(__name__)
|
METRICS = metrics_utils.get_metrics_logger(__name__)
|
||||||
|
|
||||||
# NOTE(rameshg87): This file now registers some of opts in pxe group.
|
|
||||||
# This is acceptable for now as a future refactoring into
|
|
||||||
# separate boot and deploy interfaces is planned, and moving config
|
|
||||||
# options twice is not recommended. Hence we would move the parameters
|
|
||||||
# to the appropriate place in the final refactoring.
|
|
||||||
pxe_opts = [
|
|
||||||
cfg.StrOpt('pxe_append_params',
|
|
||||||
default='nofb nomodeset vga=normal',
|
|
||||||
help=_('Additional append parameters for baremetal PXE boot.')),
|
|
||||||
cfg.StrOpt('default_ephemeral_format',
|
|
||||||
default='ext4',
|
|
||||||
help=_('Default file system format for ephemeral partition, '
|
|
||||||
'if one is created.')),
|
|
||||||
cfg.StrOpt('images_path',
|
|
||||||
default='/var/lib/ironic/images/',
|
|
||||||
help=_('On the ironic-conductor node, directory where images '
|
|
||||||
'are stored on disk.')),
|
|
||||||
cfg.StrOpt('instance_master_path',
|
|
||||||
default='/var/lib/ironic/master_images',
|
|
||||||
help=_('On the ironic-conductor node, directory where master '
|
|
||||||
'instance images are stored on disk. '
|
|
||||||
'Setting to <None> disables image caching.')),
|
|
||||||
cfg.IntOpt('image_cache_size',
|
|
||||||
default=20480,
|
|
||||||
help=_('Maximum size (in MiB) of cache for master images, '
|
|
||||||
'including those in use.')),
|
|
||||||
# 10080 here is 1 week - 60*24*7. It is entirely arbitrary in the absence
|
|
||||||
# of a facility to disable the ttl entirely.
|
|
||||||
cfg.IntOpt('image_cache_ttl',
|
|
||||||
default=10080,
|
|
||||||
help=_('Maximum TTL (in minutes) for old master images in '
|
|
||||||
'cache.')),
|
|
||||||
]
|
|
||||||
|
|
||||||
iscsi_opts = [
|
iscsi_opts = [
|
||||||
cfg.PortOpt('portal_port',
|
cfg.PortOpt('portal_port',
|
||||||
default=3260,
|
default=3260,
|
||||||
@ -80,8 +47,6 @@ iscsi_opts = [
|
|||||||
'for incoming connections.')),
|
'for incoming connections.')),
|
||||||
]
|
]
|
||||||
|
|
||||||
CONF = cfg.CONF
|
|
||||||
CONF.register_opts(pxe_opts, group='pxe')
|
|
||||||
CONF.register_opts(iscsi_opts, group='iscsi')
|
CONF.register_opts(iscsi_opts, group='iscsi')
|
||||||
|
|
||||||
DISK_LAYOUT_PARAMS = ('root_gb', 'swap_mb', 'ephemeral_gb')
|
DISK_LAYOUT_PARAMS = ('root_gb', 'swap_mb', 'ephemeral_gb')
|
||||||
|
@ -20,7 +20,6 @@ import shutil
|
|||||||
|
|
||||||
from ironic_lib import metrics_utils
|
from ironic_lib import metrics_utils
|
||||||
from ironic_lib import utils as ironic_utils
|
from ironic_lib import utils as ironic_utils
|
||||||
from oslo_config import cfg
|
|
||||||
from oslo_log import log as logging
|
from oslo_log import log as logging
|
||||||
from oslo_utils import fileutils
|
from oslo_utils import fileutils
|
||||||
|
|
||||||
@ -32,75 +31,18 @@ from ironic.common.i18n import _
|
|||||||
from ironic.common.i18n import _LE
|
from ironic.common.i18n import _LE
|
||||||
from ironic.common.i18n import _LW
|
from ironic.common.i18n import _LW
|
||||||
from ironic.common import image_service as service
|
from ironic.common import image_service as service
|
||||||
from ironic.common import paths
|
|
||||||
from ironic.common import pxe_utils
|
from ironic.common import pxe_utils
|
||||||
from ironic.common import states
|
from ironic.common import states
|
||||||
|
from ironic.conf import CONF
|
||||||
from ironic.drivers import base
|
from ironic.drivers import base
|
||||||
from ironic.drivers.modules import deploy_utils
|
from ironic.drivers.modules import deploy_utils
|
||||||
from ironic.drivers.modules import image_cache
|
from ironic.drivers.modules import image_cache
|
||||||
from ironic.drivers import utils as driver_utils
|
from ironic.drivers import utils as driver_utils
|
||||||
|
|
||||||
|
|
||||||
pxe_opts = [
|
|
||||||
cfg.StrOpt('pxe_config_template',
|
|
||||||
default=paths.basedir_def(
|
|
||||||
'drivers/modules/pxe_config.template'),
|
|
||||||
help=_('On ironic-conductor node, template file for PXE '
|
|
||||||
'configuration.')),
|
|
||||||
cfg.StrOpt('uefi_pxe_config_template',
|
|
||||||
default=paths.basedir_def(
|
|
||||||
'drivers/modules/elilo_efi_pxe_config.template'),
|
|
||||||
help=_('On ironic-conductor node, template file for PXE '
|
|
||||||
'configuration for UEFI boot loader.')),
|
|
||||||
cfg.StrOpt('tftp_server',
|
|
||||||
default='$my_ip',
|
|
||||||
help=_("IP address of ironic-conductor node's TFTP server.")),
|
|
||||||
cfg.StrOpt('tftp_root',
|
|
||||||
default='/tftpboot',
|
|
||||||
help=_("ironic-conductor node's TFTP root path. The "
|
|
||||||
"ironic-conductor must have read/write access to this "
|
|
||||||
"path.")),
|
|
||||||
cfg.StrOpt('tftp_master_path',
|
|
||||||
default='/tftpboot/master_images',
|
|
||||||
help=_('On ironic-conductor node, directory where master TFTP '
|
|
||||||
'images are stored on disk. '
|
|
||||||
'Setting to <None> disables image caching.')),
|
|
||||||
# NOTE(dekehn): Additional boot files options may be created in the event
|
|
||||||
# other architectures require different boot files.
|
|
||||||
cfg.StrOpt('pxe_bootfile_name',
|
|
||||||
default='pxelinux.0',
|
|
||||||
help=_('Bootfile DHCP parameter.')),
|
|
||||||
cfg.StrOpt('uefi_pxe_bootfile_name',
|
|
||||||
default='elilo.efi',
|
|
||||||
help=_('Bootfile DHCP parameter for UEFI boot mode.')),
|
|
||||||
cfg.BoolOpt('ipxe_enabled',
|
|
||||||
default=False,
|
|
||||||
help=_('Enable iPXE boot.')),
|
|
||||||
cfg.StrOpt('ipxe_boot_script',
|
|
||||||
default=paths.basedir_def(
|
|
||||||
'drivers/modules/boot.ipxe'),
|
|
||||||
help=_('On ironic-conductor node, the path to the main iPXE '
|
|
||||||
'script file.')),
|
|
||||||
cfg.IntOpt('ipxe_timeout',
|
|
||||||
default=0,
|
|
||||||
help=_('Timeout value (in seconds) for downloading an image '
|
|
||||||
'via iPXE. Defaults to 0 (no timeout)')),
|
|
||||||
cfg.StrOpt('ip_version',
|
|
||||||
default='4',
|
|
||||||
choices=['4', '6'],
|
|
||||||
help=_('The IP version that will be used for PXE booting. '
|
|
||||||
'Defaults to 4. EXPERIMENTAL')),
|
|
||||||
]
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
METRICS = metrics_utils.get_metrics_logger(__name__)
|
METRICS = metrics_utils.get_metrics_logger(__name__)
|
||||||
|
|
||||||
CONF = cfg.CONF
|
|
||||||
CONF.register_opts(pxe_opts, group='pxe')
|
|
||||||
CONF.import_opt('deploy_callback_timeout', 'ironic.conductor.manager',
|
|
||||||
group='conductor')
|
|
||||||
|
|
||||||
REQUIRED_PROPERTIES = {
|
REQUIRED_PROPERTIES = {
|
||||||
'deploy_kernel': _("UUID (from Glance) of the deployment kernel. "
|
'deploy_kernel': _("UUID (from Glance) of the deployment kernel. "
|
||||||
"Required."),
|
"Required."),
|
||||||
|
Loading…
Reference in New Issue
Block a user