Merge "Register all config options in one place"
This commit is contained in:
commit
a15361393e
|
@ -27,49 +27,7 @@ from bareon.utils import grub as gu
|
|||
from bareon.utils import hardware as hw
|
||||
from bareon.utils import utils
|
||||
|
||||
opts = [
|
||||
cfg.IntOpt(
|
||||
'timeout',
|
||||
default=10,
|
||||
help='Timeout in secs for GRUB'
|
||||
),
|
||||
cfg.BoolOpt(
|
||||
'fix_udev_net_rules',
|
||||
default=True,
|
||||
help='Add udev rules for NIC remapping'
|
||||
),
|
||||
cfg.ListOpt(
|
||||
'lvm_filter_for_mpath',
|
||||
default=['r|^/dev/disk/.*|',
|
||||
'a|^/dev/mapper/.*|',
|
||||
'r/.*/'],
|
||||
help='Extra filters for lvm.conf to force LVM works with partitions '
|
||||
'on multipath devices properly.'
|
||||
),
|
||||
cfg.ListOpt(
|
||||
'mpath_lvm_preferred_names',
|
||||
default=['^/dev/mapper/'],
|
||||
help='List of devlinks patterns which are preffered for LVM. If '
|
||||
'multipath device has a few devlinks, LVM will use the one '
|
||||
'matching to the given pattern.'
|
||||
),
|
||||
cfg.ListOpt(
|
||||
'mpath_lvm_scan_dirs',
|
||||
default=['/dev/disk/', '/dev/mapper/'],
|
||||
help='List of directories to scan recursively for LVM physical '
|
||||
'volumes. Devices in directories outside this hierarchy will be '
|
||||
'ignored.'
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'lvm_conf_path',
|
||||
default='/etc/lvm/lvm.conf',
|
||||
help='Path to LVM configuration file'
|
||||
)
|
||||
]
|
||||
|
||||
CONF = cfg.CONF
|
||||
CONF.register_opts(opts)
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
|
|
|
@ -27,32 +27,7 @@ from bareon import errors
|
|||
from bareon.utils import fs as fu
|
||||
from bareon.utils import utils
|
||||
|
||||
opts = [
|
||||
cfg.StrOpt(
|
||||
'nc_template_path',
|
||||
default='/usr/share/bareon/cloud-init-templates',
|
||||
help='Path to directory with cloud init templates',
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'tmp_path',
|
||||
default='/tmp',
|
||||
help='Temporary directory for file manipulations',
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'config_drive_path',
|
||||
default='/tmp/config-drive.img',
|
||||
help='Path where to store generated config drive image',
|
||||
),
|
||||
cfg.BoolOpt(
|
||||
'prepare_configdrive',
|
||||
default=True,
|
||||
help='Create configdrive file, use pre-builded if set to False'
|
||||
),
|
||||
]
|
||||
|
||||
CONF = cfg.CONF
|
||||
CONF.register_opts(opts)
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
|
|
|
@ -27,44 +27,7 @@ from bareon.utils import md as mu
|
|||
from bareon.utils import partition as pu
|
||||
from bareon.utils import utils
|
||||
|
||||
opts = [
|
||||
cfg.StrOpt(
|
||||
'udev_rules_dir',
|
||||
default='/etc/udev/rules.d',
|
||||
help='Path where to store actual rules for udev daemon',
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'udev_rules_lib_dir',
|
||||
default='/lib/udev/rules.d',
|
||||
help='Path where to store default rules for udev daemon',
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'udev_rename_substr',
|
||||
default='.renamedrule',
|
||||
help='Substring to which file extension .rules be renamed',
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'udev_empty_rule',
|
||||
default='empty_rule',
|
||||
help='Correct empty rule for udev daemon',
|
||||
),
|
||||
cfg.BoolOpt(
|
||||
'skip_md_containers',
|
||||
default=True,
|
||||
help='Allow to skip MD containers (fake raid leftovers) while '
|
||||
'cleaning the rest of MDs',
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'partition_alignment',
|
||||
default='optimal',
|
||||
help='Set alignment for newly created partitions, valid alignment '
|
||||
'types are: none, cylinder, minimal, optimal'
|
||||
),
|
||||
]
|
||||
|
||||
CONF = cfg.CONF
|
||||
CONF.register_opts(opts)
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@ from oslo_log import log as logging
|
|||
import six
|
||||
import yaml
|
||||
|
||||
from bareon import conf
|
||||
from bareon import errors
|
||||
from bareon.utils import utils
|
||||
from bareon import version
|
||||
|
@ -56,11 +57,6 @@ cli_opts = [
|
|||
default='/tmp/config-drive.img',
|
||||
help='Path where to store generated config drive image',
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'image_build_dir',
|
||||
default='/tmp',
|
||||
help='Directory where the image is supposed to be built',
|
||||
),
|
||||
]
|
||||
|
||||
CONF = cfg.CONF
|
||||
|
@ -141,6 +137,8 @@ def handle_exception(exc):
|
|||
|
||||
|
||||
def main(actions=None):
|
||||
conf.register_opts()
|
||||
|
||||
# NOTE(agordeev): get its own process group by calling setpgrp.
|
||||
# Process group is used to distribute signals to subprocesses.
|
||||
# The main application is already a process group leader,
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
#
|
||||
# Copyright 2017 Cray Inc. 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.
|
||||
|
||||
from oslo_config import cfg
|
||||
from oslo_log import log as logging
|
||||
|
||||
from bareon.conf import default
|
||||
|
||||
CONF = cfg.CONF
|
||||
|
||||
|
||||
def register_opts():
|
||||
default.register_opts(CONF)
|
||||
|
||||
logging.register_options(CONF)
|
|
@ -0,0 +1,247 @@
|
|||
#
|
||||
# Copyright 2017 Cray Inc. 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.
|
||||
|
||||
from oslo_config import cfg
|
||||
|
||||
action_opts = [
|
||||
cfg.IntOpt(
|
||||
'timeout',
|
||||
default=10,
|
||||
help='Timeout in secs for GRUB'
|
||||
),
|
||||
cfg.BoolOpt(
|
||||
'fix_udev_net_rules',
|
||||
default=True,
|
||||
help='Add udev rules for NIC remapping'
|
||||
),
|
||||
cfg.ListOpt(
|
||||
'lvm_filter_for_mpath',
|
||||
default=['r|^/dev/disk/.*|',
|
||||
'a|^/dev/mapper/.*|',
|
||||
'r/.*/'],
|
||||
help='Extra filters for lvm.conf to force LVM works with partitions '
|
||||
'on multipath devices properly.'
|
||||
),
|
||||
cfg.ListOpt(
|
||||
'mpath_lvm_preferred_names',
|
||||
default=['^/dev/mapper/'],
|
||||
help='List of devlinks patterns which are preffered for LVM. If '
|
||||
'multipath device has a few devlinks, LVM will use the one '
|
||||
'matching to the given pattern.'
|
||||
),
|
||||
cfg.ListOpt(
|
||||
'mpath_lvm_scan_dirs',
|
||||
default=['/dev/disk/', '/dev/mapper/'],
|
||||
help='List of directories to scan recursively for LVM physical '
|
||||
'volumes. Devices in directories outside this hierarchy will be '
|
||||
'ignored.'
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'lvm_conf_path',
|
||||
default='/etc/lvm/lvm.conf',
|
||||
help='Path to LVM configuration file'
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'nc_template_path',
|
||||
default='/usr/share/bareon/cloud-init-templates',
|
||||
help='Path to directory with cloud init templates',
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'tmp_path',
|
||||
default='/tmp',
|
||||
help='Temporary directory for file manipulations',
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'config_drive_path',
|
||||
default='/tmp/config-drive.img',
|
||||
help='Path where to store generated config drive image',
|
||||
),
|
||||
cfg.BoolOpt(
|
||||
'prepare_configdrive',
|
||||
default=True,
|
||||
help='Create configdrive file, use pre-builded if set to False'
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'udev_rules_dir',
|
||||
default='/etc/udev/rules.d',
|
||||
help='Path where to store actual rules for udev daemon',
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'udev_rules_lib_dir',
|
||||
default='/lib/udev/rules.d',
|
||||
help='Path where to store default rules for udev daemon',
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'udev_rename_substr',
|
||||
default='.renamedrule',
|
||||
help='Substring to which file extension .rules be renamed',
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'udev_empty_rule',
|
||||
default='empty_rule',
|
||||
help='Correct empty rule for udev daemon',
|
||||
),
|
||||
cfg.BoolOpt(
|
||||
'skip_md_containers',
|
||||
default=True,
|
||||
help='Allow to skip MD containers (fake raid leftovers) while '
|
||||
'cleaning the rest of MDs',
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'partition_alignment',
|
||||
default='optimal',
|
||||
help='Set alignment for newly created partitions, valid alignment '
|
||||
'types are: none, cylinder, minimal, optimal'
|
||||
),
|
||||
]
|
||||
|
||||
generic_deploy_opts = [
|
||||
cfg.StrOpt(
|
||||
'udev_rules_dir',
|
||||
default='/etc/udev/rules.d',
|
||||
help='Path where to store actual rules for udev daemon',
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'udev_rules_lib_dir',
|
||||
default='/lib/udev/rules.d',
|
||||
help='Path where to store default rules for udev daemon',
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'udev_rename_substr',
|
||||
default='.renamedrule',
|
||||
help='Substring to which file extension .rules be renamed',
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'udev_empty_rule',
|
||||
default='empty_rule',
|
||||
help='Correct empty rule for udev daemon',
|
||||
),
|
||||
cfg.IntOpt(
|
||||
'grub_timeout',
|
||||
default=5,
|
||||
help='Timeout in secs for GRUB'
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'default_root_password',
|
||||
default='r00tme',
|
||||
help='Default password for root user',
|
||||
),
|
||||
]
|
||||
|
||||
swift_deploy_opts = [
|
||||
cfg.StrOpt(
|
||||
'image_build_dir',
|
||||
default='/tmp',
|
||||
help='Directory where the image is supposed to be built',
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'image_build_suffix',
|
||||
default='.fuel-agent-image',
|
||||
help='Suffix which is used while creating temporary files',
|
||||
),
|
||||
cfg.IntOpt(
|
||||
'max_loop_devices_count',
|
||||
default=255,
|
||||
# NOTE(agordeev): up to 256 loop devices could be allocated up to
|
||||
# kernel version 2.6.23, and the limit (from version 2.6.24 onwards)
|
||||
# isn't theoretically present anymore.
|
||||
help='Maximum allowed loop devices count to use'
|
||||
),
|
||||
cfg.IntOpt(
|
||||
'sparse_file_size',
|
||||
# XXX: Apparently Fuel configures the node root filesystem to span
|
||||
# the whole hard drive. However 2 GB filesystem created with default
|
||||
# options can grow at most to 2 TB (1024x its initial size). This
|
||||
# maximal size can be configured by mke2fs -E resize=NNN option,
|
||||
# however the version of e2fsprogs shipped with CentOS 6.[65] seems
|
||||
# to silently ignore the `resize' option. Therefore make the initial
|
||||
# filesystem a bit bigger so it can grow to 8 TB.
|
||||
default=8192,
|
||||
help='Size of sparse file in MiBs'
|
||||
),
|
||||
cfg.IntOpt(
|
||||
'loop_device_major_number',
|
||||
default=7,
|
||||
help='System-wide major number for loop device'
|
||||
),
|
||||
cfg.IntOpt(
|
||||
'fetch_packages_attempts',
|
||||
default=10,
|
||||
help='Maximum allowed debootstrap/apt-get attempts to execute'
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'allow_unsigned_file',
|
||||
default='allow_unsigned_packages',
|
||||
help='File where to store apt setting for unsigned packages'
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'force_ipv4_file',
|
||||
default='force_ipv4',
|
||||
help='File where to store apt setting for forcing IPv4 usage'
|
||||
),
|
||||
cfg.IntOpt(
|
||||
'max_allowed_attempts_attach_image',
|
||||
default=10,
|
||||
help='Maximum allowed attempts to attach image file to loop device'
|
||||
),
|
||||
]
|
||||
|
||||
utils_opts = [
|
||||
cfg.IntOpt(
|
||||
'data_chunk_size',
|
||||
default=1048576,
|
||||
help='Size of data chunk to operate with images'
|
||||
),
|
||||
cfg.IntOpt(
|
||||
'http_max_retries',
|
||||
default=30,
|
||||
help='Maximum retries count for http requests. 0 means infinite',
|
||||
),
|
||||
cfg.FloatOpt(
|
||||
'http_request_timeout',
|
||||
# Setting it to 10 secs will allow fuel-agent to overcome the momentary
|
||||
# peak loads when network bandwidth becomes as low as 0.1MiB/s, thus
|
||||
# preventing of wasting too much retries on such false positives.
|
||||
default=10.0,
|
||||
help='Http request timeout in seconds',
|
||||
),
|
||||
cfg.FloatOpt(
|
||||
'http_retry_delay',
|
||||
default=2.0,
|
||||
help='Delay in seconds before the next http request retry',
|
||||
),
|
||||
cfg.IntOpt(
|
||||
'read_chunk_size',
|
||||
default=1048576,
|
||||
help='Block size of data to read for calculating checksum',
|
||||
),
|
||||
cfg.FloatOpt(
|
||||
'execute_retry_delay',
|
||||
default=2.0,
|
||||
help='Delay in seconds before the next exectuion will retry',
|
||||
),
|
||||
cfg.IntOpt(
|
||||
'partition_udev_settle_attempts',
|
||||
default=10,
|
||||
help='How many times udev settle will be called after partitioning'
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
def register_opts(conf):
|
||||
conf.register_opts(action_opts)
|
||||
conf.register_opts(generic_deploy_opts)
|
||||
conf.register_opts(swift_deploy_opts)
|
||||
conf.register_opts(utils_opts)
|
|
@ -29,15 +29,7 @@ from bareon.drivers.data.base import PartitioningDataDriverMixin
|
|||
from bareon.drivers.data.base import ProvisioningDataDriverMixin
|
||||
|
||||
|
||||
opts = [
|
||||
cfg.StrOpt(
|
||||
'config_drive_path',
|
||||
default='/tmp/config-drive.img',
|
||||
help='Path where to store generated config drive image',
|
||||
),
|
||||
]
|
||||
CONF = cfg.CONF
|
||||
CONF.register_opts(opts)
|
||||
|
||||
|
||||
# TODO(lobur): This driver mostly copies nailgun driver. Need to merge them.
|
||||
|
|
|
@ -39,11 +39,7 @@ from bareon import objects
|
|||
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
CONF = cfg.CONF
|
||||
CONF.import_opt('prepare_configdrive', 'bareon.drivers.deploy.nailgun')
|
||||
CONF.import_opt('config_drive_path', 'bareon.drivers.deploy.nailgun')
|
||||
CONF.import_opt('default_root_password', 'bareon.drivers.deploy.nailgun')
|
||||
|
||||
|
||||
def match_device(hu_disk, ks_disk):
|
||||
|
|
|
@ -38,37 +38,7 @@ from bareon.utils import md as mu
|
|||
from bareon.utils import partition as pu
|
||||
from bareon.utils import utils
|
||||
|
||||
opts = [
|
||||
cfg.StrOpt(
|
||||
'udev_rules_dir',
|
||||
default='/etc/udev/rules.d',
|
||||
help='Path where to store actual rules for udev daemon',
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'udev_rules_lib_dir',
|
||||
default='/lib/udev/rules.d',
|
||||
help='Path where to store default rules for udev daemon',
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'udev_rename_substr',
|
||||
default='.renamedrule',
|
||||
help='Substring to which file extension .rules be renamed',
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'udev_empty_rule',
|
||||
default='empty_rule',
|
||||
help='Correct empty rule for udev daemon',
|
||||
),
|
||||
cfg.IntOpt(
|
||||
'grub_timeout',
|
||||
default=5,
|
||||
help='Timeout in secs for GRUB'
|
||||
),
|
||||
]
|
||||
|
||||
CONF = cfg.CONF
|
||||
CONF.register_opts(opts)
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
|
|
|
@ -32,95 +32,7 @@ from bareon.utils import build as bu
|
|||
from bareon.utils import fs as fu
|
||||
from bareon.utils import utils
|
||||
|
||||
opts = [
|
||||
cfg.StrOpt(
|
||||
'nc_template_path',
|
||||
default='/usr/share/bareon/cloud-init-templates',
|
||||
help='Path to directory with cloud init templates',
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'tmp_path',
|
||||
default='/tmp',
|
||||
help='Temporary directory for file manipulations',
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'config_drive_path',
|
||||
default='/tmp/config-drive.img',
|
||||
help='Path where to store generated config drive image',
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'image_build_suffix',
|
||||
default='.bareon-image',
|
||||
help='Suffix which is used while creating temporary files',
|
||||
),
|
||||
cfg.IntOpt(
|
||||
'max_loop_devices_count',
|
||||
default=255,
|
||||
# NOTE(agordeev): up to 256 loop devices could be allocated up to
|
||||
# kernel version 2.6.23, and the limit (from version 2.6.24 onwards)
|
||||
# isn't theoretically present anymore.
|
||||
help='Maximum allowed loop devices count to use'
|
||||
),
|
||||
cfg.IntOpt(
|
||||
'max_allowed_attempts_attach_image',
|
||||
default=10,
|
||||
help='Maximum allowed attempts to attach image file to loop device'
|
||||
),
|
||||
cfg.IntOpt(
|
||||
'sparse_file_size',
|
||||
# XXX: Apparently Fuel configures the node root filesystem to span
|
||||
# the whole hard drive. However 2 GB filesystem created with default
|
||||
# options can grow at most to 2 TB (1024x its initial size). This
|
||||
# maximal size can be configured by mke2fs -E resize=NNN option,
|
||||
# however the version of e2fsprogs shipped with CentOS 6.[65] seems
|
||||
# to silently ignore the `resize' option. Therefore make the initial
|
||||
# filesystem a bit bigger so it can grow to 8 TB.
|
||||
default=8192,
|
||||
help='Size of sparse file in MiBs'
|
||||
),
|
||||
cfg.IntOpt(
|
||||
'loop_device_major_number',
|
||||
default=7,
|
||||
help='System-wide major number for loop device'
|
||||
),
|
||||
cfg.IntOpt(
|
||||
'fetch_packages_attempts',
|
||||
default=10,
|
||||
help='Maximum allowed debootstrap/apt-get attempts to execute'
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'allow_unsigned_file',
|
||||
default='allow_unsigned_packages',
|
||||
help='File where to store apt setting for unsigned packages'
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'force_ipv4_file',
|
||||
default='force_ipv4',
|
||||
help='File where to store apt setting for forcing IPv4 usage'
|
||||
),
|
||||
cfg.BoolOpt(
|
||||
'prepare_configdrive',
|
||||
default=True,
|
||||
help='Create configdrive file, use pre-builded if set to False'
|
||||
),
|
||||
cfg.BoolOpt(
|
||||
'fix_udev_net_rules',
|
||||
default=True,
|
||||
help='Add udev rules for NIC remapping'
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'default_root_password',
|
||||
default='r00tme',
|
||||
help='Default password for root user',
|
||||
)
|
||||
]
|
||||
|
||||
CONF = cfg.CONF
|
||||
CONF.register_opts(opts)
|
||||
CONF.import_opt('image_build_dir', 'bareon.cmd.agent')
|
||||
CONF.import_opt('mpath_lvm_preferred_names', 'bareon.actions.bootloader')
|
||||
CONF.import_opt('lvm_conf_path', 'bareon.actions.bootloader')
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
|
@ -687,23 +599,3 @@ class Manager(BaseDeployDriver):
|
|||
finally:
|
||||
LOG.info('Cleanup chroot')
|
||||
self.destroy_chroot(chroot)
|
||||
|
||||
|
||||
def list_opts():
|
||||
"""Returns a list of oslo.config options available in the library.
|
||||
|
||||
The returned list includes all oslo.config options which may be registered
|
||||
at runtime by the library.
|
||||
|
||||
Each element of the list is a tuple. The first element is the name of the
|
||||
group under which the list of elements in the second element will be
|
||||
registered. A group name of None corresponds to the [DEFAULT] group in
|
||||
config files.
|
||||
|
||||
The purpose of this is to allow tools like the Oslo sample config file
|
||||
generator (oslo-config-generator) to discover the options exposed to users
|
||||
by this library.
|
||||
|
||||
:returns: a list of (group_name, opts) tuples
|
||||
"""
|
||||
return [(None, (opts))]
|
||||
|
|
|
@ -22,57 +22,7 @@ from bareon.utils import artifact as au
|
|||
from bareon.utils import fs as fu
|
||||
from bareon.utils import utils
|
||||
|
||||
opts = [
|
||||
cfg.StrOpt(
|
||||
'image_build_suffix',
|
||||
default='.bareon-image',
|
||||
help='Suffix which is used while creating temporary files',
|
||||
),
|
||||
cfg.IntOpt(
|
||||
'max_loop_devices_count',
|
||||
default=255,
|
||||
# NOTE(agordeev): up to 256 loop devices could be allocated up to
|
||||
# kernel version 2.6.23, and the limit (from version 2.6.24 onwards)
|
||||
# isn't theoretically present anymore.
|
||||
help='Maximum allowed loop devices count to use'
|
||||
),
|
||||
cfg.IntOpt(
|
||||
'sparse_file_size',
|
||||
# XXX: Apparently Fuel configures the node root filesystem to span
|
||||
# the whole hard drive. However 2 GB filesystem created with default
|
||||
# options can grow at most to 2 TB (1024x its initial size). This
|
||||
# maximal size can be configured by mke2fs -E resize=NNN option,
|
||||
# however the version of e2fsprogs shipped with CentOS 6.[65] seems
|
||||
# to silently ignore the `resize' option. Therefore make the initial
|
||||
# filesystem a bit bigger so it can grow to 8 TB.
|
||||
default=8192,
|
||||
help='Size of sparse file in MiBs'
|
||||
),
|
||||
cfg.IntOpt(
|
||||
'loop_device_major_number',
|
||||
default=7,
|
||||
help='System-wide major number for loop device'
|
||||
),
|
||||
cfg.IntOpt(
|
||||
'fetch_packages_attempts',
|
||||
default=10,
|
||||
help='Maximum allowed debootstrap/apt-get attempts to execute'
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'allow_unsigned_file',
|
||||
default='allow_unsigned_packages',
|
||||
help='File where to store apt setting for unsigned packages'
|
||||
),
|
||||
cfg.StrOpt(
|
||||
'force_ipv4_file',
|
||||
default='force_ipv4',
|
||||
help='File where to store apt setting for forcing IPv4 usage'
|
||||
),
|
||||
]
|
||||
|
||||
CONF = cfg.CONF
|
||||
CONF.register_opts(opts)
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
#
|
||||
# Copyright 2017 Cray Inc. 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.
|
||||
|
||||
from bareon import conf
|
||||
|
||||
conf.register_opts()
|
|
@ -26,17 +26,7 @@ from bareon import errors
|
|||
from bareon.utils import utils
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
au_opts = [
|
||||
cfg.IntOpt(
|
||||
'data_chunk_size',
|
||||
default=1048576,
|
||||
help='Size of data chunk to operate with images'
|
||||
),
|
||||
]
|
||||
|
||||
CONF = cfg.CONF
|
||||
CONF.register_opts(au_opts)
|
||||
|
||||
|
||||
@six.add_metaclass(abc.ABCMeta)
|
||||
|
@ -229,23 +219,3 @@ class Chain(object):
|
|||
else:
|
||||
return next_proc(proc)
|
||||
return six.moves.reduce(jump, self.processors)
|
||||
|
||||
|
||||
def list_opts():
|
||||
"""Returns a list of oslo.config options available in the library.
|
||||
|
||||
The returned list includes all oslo.config options which may be registered
|
||||
at runtime by the library.
|
||||
|
||||
Each element of the list is a tuple. The first element is the name of the
|
||||
group under which the list of elements in the second element will be
|
||||
registered. A group name of None corresponds to the [DEFAULT] group in
|
||||
config files.
|
||||
|
||||
The purpose of this is to allow tools like the Oslo sample config file
|
||||
generator (oslo-config-generator) to discover the options exposed to users
|
||||
by this library.
|
||||
|
||||
:returns: a list of (group_name, opts) tuples
|
||||
"""
|
||||
return [(None, (au_opts))]
|
||||
|
|
|
@ -38,51 +38,13 @@ import six
|
|||
import stevedore.driver
|
||||
import urllib3
|
||||
|
||||
|
||||
from bareon import conf
|
||||
from bareon import errors
|
||||
|
||||
random = _random.SystemRandom()
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
u_opts = [
|
||||
cfg.IntOpt(
|
||||
'http_max_retries',
|
||||
default=30,
|
||||
help='Maximum retries count for http requests. 0 means infinite',
|
||||
),
|
||||
cfg.FloatOpt(
|
||||
'http_request_timeout',
|
||||
# Setting it to 10 secs will allow bareon to overcome the momentary
|
||||
# peak loads when network bandwidth becomes as low as 0.1MiB/s, thus
|
||||
# preventing of wasting too much retries on such false positives.
|
||||
default=10.0,
|
||||
help='Http request timeout in seconds',
|
||||
),
|
||||
cfg.FloatOpt(
|
||||
'http_retry_delay',
|
||||
default=2.0,
|
||||
help='Delay in seconds before the next http request retry',
|
||||
),
|
||||
cfg.IntOpt(
|
||||
'read_chunk_size',
|
||||
default=1048576,
|
||||
help='Block size of data to read for calculating checksum',
|
||||
),
|
||||
cfg.FloatOpt(
|
||||
'execute_retry_delay',
|
||||
default=2.0,
|
||||
help='Delay in seconds before the next exectuion will retry',
|
||||
),
|
||||
cfg.IntOpt(
|
||||
'partition_udev_settle_attempts',
|
||||
default=10,
|
||||
help='How many times udev settle will be called after partitioning'
|
||||
),
|
||||
]
|
||||
|
||||
CONF = cfg.CONF
|
||||
CONF.register_opts(u_opts)
|
||||
|
||||
|
||||
# NOTE(agordeev): signature compatible with execute from oslo
|
||||
|
@ -497,7 +459,7 @@ def list_opts():
|
|||
|
||||
:returns: a list of (group_name, opts) tuples
|
||||
"""
|
||||
return [(None, (u_opts))]
|
||||
return [(None, conf.default.utils_opts)]
|
||||
|
||||
|
||||
class EqualComparisonMixin(object):
|
||||
|
|
|
@ -47,10 +47,8 @@ bareon.actions =
|
|||
do_bootloader = bareon.actions.bootloader:BootLoaderAction
|
||||
|
||||
oslo.config.opts =
|
||||
bareon.manager = bareon.manager:list_opts
|
||||
bareon.agent = bareon.cmd.agent:list_opts
|
||||
bareon.utils = bareon.utils.utils:list_opts
|
||||
bareon.artifact= bareon.utils.artifact:list_opts
|
||||
|
||||
[pbr]
|
||||
autodoc_index_modules = True
|
||||
|
|
Loading…
Reference in New Issue