# HG changeset patch # User Laszlo Peter # Date 1473284922 25200 # Node ID ea44e7e0ca98dee6ed40e823cf440f651c2d2c4b # Parent 52081f9230194234fd6e63bc781b2dadb2b776d7 24465791 Update Ironic for the Mitaka release diff -r 52081f923019 -r ea44e7e0ca98 components/openstack/ironic/Makefile --- a/components/openstack/ironic/Makefile Wed Sep 07 14:48:42 2016 -0700 +++ b/components/openstack/ironic/Makefile Wed Sep 07 14:48:42 2016 -0700 @@ -26,19 +26,20 @@ include ../../../make-rules/shared-macros.mk COMPONENT_NAME= ironic -COMPONENT_CODENAME= kilo -COMPONENT_VERSION= 2015.1.2 -COMPONENT_BE_VERSION= 2015.1 +COMPONENT_CODENAME= mitaka +COMPONENT_VERSION= 5.1.2 +COMPONENT_BE_VERSION= 2016.1 COMPONENT_SRC= $(COMPONENT_NAME)-$(COMPONENT_VERSION) COMPONENT_ARCHIVE= $(COMPONENT_SRC).tar.gz COMPONENT_ARCHIVE_HASH= \ - sha256:fd85246f7c9b0976a27b863de328f1240d43d4633511cd832e8d6904f6f4b06c -COMPONENT_ARCHIVE_URL= http://launchpad.net/$(COMPONENT_NAME)/$(COMPONENT_CODENAME)/$(COMPONENT_VERSION)/+download/$(COMPONENT_ARCHIVE) + sha256:d2f2dcc3ff21abc4c8d03f309dfe3f441e482c403f4991bef2f9236bf1f6188b +COMPONENT_ARCHIVE_URL= https://tarballs.openstack.org/$(COMPONENT_NAME)/$(COMPONENT_ARCHIVE) +COMPONENT_SIG_URL= $(COMPONENT_ARCHIVE_URL).asc + COMPONENT_PROJECT_URL= http://www.openstack.org/ COMPONENT_BUGDB= service/ironic -IPS_COMPONENT_VERSION= 0.$(COMPONENT_VERSION) -TPNO= 25789 +TPNO= 30357 PKG_VARS += COMPONENT_BE_VERSION @@ -91,7 +92,6 @@ # test: $(NO_TESTS) - REQUIRED_PACKAGES += cloud/openstack/openstack-common REQUIRED_PACKAGES += install/installadm REQUIRED_PACKAGES += library/python/sqlalchemy-27 diff -r 52081f923019 -r ea44e7e0ca98 components/openstack/ironic/files/drivers/modules/solaris_ipmitool.py --- a/components/openstack/ironic/files/drivers/modules/solaris_ipmitool.py Wed Sep 07 14:48:42 2016 -0700 +++ b/components/openstack/ironic/files/drivers/modules/solaris_ipmitool.py Wed Sep 07 14:48:42 2016 -0700 @@ -38,9 +38,12 @@ from lockfile import LockFile, LockTimeout from oslo_concurrency import processutils -from oslo.config import cfg -from oslo_utils import excutils +from oslo_config import cfg +from oslo_log import log as logging +from oslo_service import loopingcall +from oslo_utils import excutils, strutils from scp import SCPClient +import six from ironic.common import boot_devices, exception, images, keystone, states, \ utils @@ -51,8 +54,7 @@ from ironic.drivers import base from ironic.drivers.modules import ipmitool from ironic.drivers import utils as driver_utils -from ironic.openstack.common import log as logging -from ironic.openstack.common import loopingcall +from ironic import objects PLATFORM = platform.system() if PLATFORM != "SunOS": @@ -90,12 +92,6 @@ help='Actual SSH Key contents to use.') ] -AUTH_OPTS = [ - cfg.StrOpt('auth_strategy', - default='keystone', - help='Method to use for authentication: noauth or keystone.') - ] - SOLARIS_IPMI_OPTS = [ cfg.StrOpt('imagecache_dirname', default='/var/lib/ironic/images', @@ -109,10 +105,9 @@ CONF = cfg.CONF OPT_GROUP = cfg.OptGroup(name='ai', - title='Options for the Automated Install driver') + title='Options for the Solaris driver') CONF.register_group(OPT_GROUP) CONF.register_opts(AI_OPTS, OPT_GROUP) -CONF.register_opts(AUTH_OPTS) SOLARIS_IPMI_GROUP = cfg.OptGroup( name="solaris_ipmi", title="Options defined in ironic.drivers.modules.solaris_ipmi") @@ -144,28 +139,38 @@ 'install_profiles': _("List of configuration profiles to be applied " "to the installation environment during an install. " "Optional."), - 'ipmi_bridging': _("bridging_type; default is \"no\". One of \"single\", " - "\"dual\", \"no\". Optional."), - 'ipmi_local_address': _("local IPMB address for bridged requests. " - "Used only if ipmi_bridging is set " - "to \"single\" or \"dual\". Optional."), + 'publishers': _("List of IPS publishers to install from, in the format " + "name@origin. Required if fmri property is set."), + 'sc_profiles': _("List of system configuration profiles to be applied " + "to an installed system. Optional."), + + 'ipmi_port': _("remote IPMI RMCP port. Optional."), 'ipmi_priv_level': _("privilege level; default is ADMINISTRATOR. " "One of %s. Optional.") % '. '.join(ipmitool.VALID_PRIV_LEVELS), + 'ipmi_bridging': _("bridging_type; default is \"no\". One of \"single\", " + "\"dual\", \"no\". Optional."), + 'ipmi_transit_channel': _("transit channel for bridged request. Required " + "only if ipmi_bridging is set to \"dual\"."), + 'ipmi_transit_address': _("transit address for bridged request. Required " + "only if ipmi_bridging is set to \"dual\"."), + 'ipmi_target_channel': _("destination channel for bridged request. " + "Required only if ipmi_bridging is set to " + "\"single\" or \"dual\"."), 'ipmi_target_address': _("destination address for bridged request. " "Required only if ipmi_bridging is set " "to \"single\" or \"dual\"."), - 'ipmi_target_channel': _("destination channel for bridged request. " - "Required only if ipmi_bridging is set to " - "\"single\" or \"dual\"."), - 'ipmi_transit_address': _("transit address for bridged request. Required " - "only if ipmi_bridging is set to \"dual\"."), - 'ipmi_transit_channel': _("transit channel for bridged request. Required " - "only if ipmi_bridging is set to \"dual\"."), - 'publishers': _("List of IPS publishers to install from, in the format " - "name@origin. Required if fmri property is set."), - 'sc_profiles': _("List of system configuration profiles to be applied " - "to an installed system. Optional.") + 'ipmi_local_address': _("local IPMB address for bridged requests. " + "Used only if ipmi_bridging is set " + "to \"single\" or \"dual\". Optional."), + 'ipmi_protocol_version': _('the version of the IPMI protocol; default ' + 'is "2.0". One of "1.5", "2.0". Optional.'), + 'ipmi_force_boot_device': _("Whether Ironic should specify the boot " + "device to the BMC each time the server " + "is turned on, eg. because the BMC is not " + "capable of remembering the selected boot " + "device across power cycles; default value " + "is False. Optional.") } COMMON_PROPERTIES = REQUIRED_PROPERTIES.copy() @@ -186,9 +191,6 @@ CPU_LOCATION = '/System/Processors/CPUs/CPU_%d/total_cores' LAST_CMD_TIME = {} -TIMING_SUPPORT = None -SINGLE_BRIDGE_SUPPORT = None -DUAL_BRIDGE_SUPPORT = None def _ssh_execute(ssh_obj, ssh_cmd, raise_exception=True, err_msg=None): @@ -208,7 +210,7 @@ try: stdout = processutils.ssh_execute(ssh_obj, ssh_cmd)[0] except Exception as err: - LOG.debug(_("Cannot execute SSH cmd %(cmd)s. Reason: %(err)s.") % + LOG.error(_LE("Cannot execute SSH cmd %(cmd)s. Reason: %(err)s.") % {'cmd': ssh_cmd, 'err': err}) returncode = 1 if raise_exception: @@ -237,13 +239,14 @@ bridging_types = ['single', 'dual'] missing_info = [key for key in REQUIRED_PROPERTIES if not info.get(key)] if missing_info: - raise exception.MissingParameterValue( - _("The following IPMI credentials are not supplied" - " to IPMI driver: %s.") % missing_info) + raise exception.MissingParameterValue(_( + "Missing the following IPMI credentials in node's" + " driver_info: %s.") % missing_info) address = info.get('ipmi_address') username = info.get('ipmi_username') - password = info.get('ipmi_password') + password = six.text_type(info.get('ipmi_password', '')) + dest_port = info.get('ipmi_port') port = info.get('ipmi_terminal_port') priv_level = info.get('ipmi_priv_level', 'ADMINISTRATOR') bridging_type = info.get('ipmi_bridging', 'no') @@ -252,19 +255,34 @@ transit_address = info.get('ipmi_transit_address') target_channel = info.get('ipmi_target_channel') target_address = info.get('ipmi_target_address') - - if port: - try: - port = int(port) - except ValueError: - raise exception.InvalidParameterValue(_( - "IPMI terminal port is not an integer.")) + protocol_version = str(info.get('ipmi_protocol_version', '2.0')) + force_boot_device = info.get('ipmi_force_boot_device', False) + + if not username: + LOG.warning(_LW('ipmi_username is not defined or empty for node %s: ' + 'NULL user will be utilized.') % node.uuid) + if not password: + LOG.warning(_LW('ipmi_password is not defined or empty for node %s: ' + 'NULL password will be utilized.') % node.uuid) + + if protocol_version not in ipmitool.VALID_PROTO_VERSIONS: + valid_versions = ', '.join(ipmitool.VALID_PROTO_VERSIONS) + raise exception.InvalidParameterValue(_( + "Invalid IPMI protocol version value %(version)s, the valid " + "value can be one of %(valid_versions)s") % + {'version': protocol_version, 'valid_versions': valid_versions}) + + if port is not None: + port = utils.validate_network_port(port, 'ipmi_terminal_port') + + if dest_port is not None: + dest_port = utils.validate_network_port(dest_port, 'ipmi_port') # check if ipmi_bridging has proper value if bridging_type == 'no': # if bridging is not selected, then set all bridging params to None - local_address = transit_channel = transit_address = \ - target_channel = target_address = None + (local_address, transit_channel, transit_address, target_channel, + target_address) = (None,) * 5 elif bridging_type in bridging_types: # check if the particular bridging option is supported on host if not ipmitool._is_option_supported('%s_bridge' % bridging_type): @@ -309,6 +327,7 @@ return { 'address': address, + 'dest_port': dest_port, 'username': username, 'password': password, 'port': port, @@ -318,8 +337,10 @@ 'transit_channel': transit_channel, 'transit_address': transit_address, 'target_channel': target_channel, - 'target_address': target_address - } + 'target_address': target_address, + 'protocol_version': protocol_version, + 'force_boot_device': force_boot_device + } def _exec_ipmitool(driver_info, command): @@ -344,13 +365,21 @@ """ LOG.debug("SolarisDeploy._exec_ipmitool:driver_info: '%s', " "command: '%s'" % (driver_info, command)) + ipmi_version = ('lanplus' + if driver_info['protocol_version'] == '2.0' + else 'lan') args = ['/usr/sbin/ipmitool', '-I', - 'lanplus', + ipmi_version, '-H', driver_info['address'], '-L', driver_info['priv_level'] ] + + if driver_info['dest_port']: + args.append('-p') + args.append(driver_info['dest_port']) + if driver_info['username']: args.append('-U') args.append(driver_info['username']) @@ -378,7 +407,7 @@ # NOTE(deva): ensure that no communications are sent to a BMC more # often than once every min_command_interval seconds. time_till_next_poll = CONF.ipmi.min_command_interval - ( - time.time() - LAST_CMD_TIME.get(driver_info['address'], 0)) + time.time() - LAST_CMD_TIME.get(driver_info['address'], 0)) if time_till_next_poll > 0: time.sleep(time_till_next_poll) # Resetting the list that will be utilized so the password arguments @@ -399,7 +428,7 @@ except processutils.ProcessExecutionError as e: with excutils.save_and_reraise_exception() as ctxt: err_list = [x for x in ipmitool.IPMITOOL_RETRYABLE_FAILURES - if x in e.message] + if x in six.text_type(e)] if ((time.time() > end_time) or (num_tries == 0) or not err_list): @@ -443,7 +472,7 @@ cpu_arch, _err = _exec_ipmitool(driver_info, ipmi_cmd_args) except Exception as err: LOG.error(_LE("Failed to get node architecture from IPMI : %s" % - (err))) + (err))) raise exception.IPMIFailure(cmd=err) propdict = {'cpu_arch': cpu_arch} @@ -484,14 +513,12 @@ LOG.debug("_check_deploy_state() deploy_thread_state: %s" % (deploy_thread.state)) - # Get DB instance - mydbapi = dbapi.get_instance() try: # Get current DB copy of node - cur_node = mydbapi.get_node_by_uuid(node_uuid) + cur_node = objects.Node.get_by_uuid(task.context, node_uuid) except exception.NodeNotFound: - LOG.info(_("During check_deploy_state, node %(node)s was not " - "found and presumed deleted by another process.") % + LOG.info(_LI("During check_deploy_state, node %(node)s was not " + "found and presumed deleted by another process.") % {'node': node_uuid}) # Thread should have stopped already, but let's make sure. deploy_thread.stop() @@ -506,8 +533,8 @@ task.node.save() raise loopingcall.LoopingCallDone() except Exception as err: - LOG.info(_("During check_deploy_state, node %(node)s could " - "not be retrieved: %(err)s") % + LOG.info(_LI("During check_deploy_state, node %(node)s could " + "not be retrieved: %(err)s") % {'node': node_uuid, 'err': err}) # Thread should have stopped already, but lets make sure. deploy_thread.stop() @@ -538,8 +565,11 @@ if deploy_thread.state == states.DEPLOYDONE: cur_node.provision_state = states.ACTIVE elif deploy_thread.state == states.DEPLOYFAIL: - cur_node.last_error = "Install failed; check install.log for " + \ - "more details." + if deploy_thread.error is not None: + cur_node.last_error = deploy_thread.error + else: + cur_node.last_error = "Install failed; check install.log " + \ + "for more details." cur_node.provision_state = deploy_thread.state else: cur_node.provision_state = deploy_thread.state @@ -566,7 +596,7 @@ raise loopingcall.LoopingCallDone() elif cur_node.provision_state == states.DEPLOYFAIL: - # Node deployment as for some reason failed already, exist thread + # Node deployment has for some reason failed already, exit thread LOG.debug("_check_deploy_state().deploy_failed: %s" % (cur_node.provision_state)) deploy_thread.stop() @@ -637,8 +667,8 @@ if count == 0: # Adjusting by zero makes no sense just return - err_msg = _("Zero reference count adjustment attempted " - "on file: %s") % (image_path) + err_msg = _LE("Zero reference count adjustment attempted " + "on file: %s") % (image_path) LOG.error(err_msg) raise SolarisIPMIError(msg=err_msg) @@ -647,8 +677,8 @@ if not os.path.exists(ref_filename): if count < 0: # Cannot decrement reference on non-existent file - err_msg = _("Negative reference count adjustment attempted on " - "non-existent file: %s") % (image_path) + err_msg = _LE("Negative reference count adjustment attempted on " + "non-existent file: %s") % (image_path) LOG.error(err_msg) raise SolarisIPMIError(msg=err_msg) @@ -659,7 +689,7 @@ # Acquire lock on refcount file lock = _image_refcount_acquire_lock(image_path) if lock is None: - err_msg = _("Failed to acquire lock on image: %s") % (image_path) + err_msg = _LE("Failed to acquire lock on image: %s") % (image_path) LOG.error(err_msg) raise SolarisIPMIError(msg=err_msg) @@ -723,7 +753,7 @@ lock.release() except Exception as err: - LOG.error(_("Unable to fetch Glance image: id %s: %s") + LOG.error(_LE("Unable to fetch Glance image: id %s: %s") % (url.netloc, err)) raise else: @@ -763,7 +793,7 @@ lock.release() except Exception as err: - LOG.error(_("Unable to fetch image: id %s: %s") + LOG.error(_LE("Unable to fetch image: id %s: %s") % (url.netloc, err)) raise else: @@ -772,7 +802,7 @@ except Exception as err: # Only remove the temporary file if exception occurs # as noted above Caller is responsible for its removal - LOG.error(_("Unable to fetch image: uri %s: %s") % (uri, err)) + LOG.error(_LE("Unable to fetch image: uri %s: %s") % (uri, err)) if url.scheme == "glance": _image_refcount_adjust(temp_uri, -1) else: @@ -1241,7 +1271,7 @@ remote_file = os.path.join("/tmp", obj_name) + ".xml" aiservice.copy_remote_file(temp_file, remote_file) except Exception as err: - LOG.error(_("Fetch and create failed for %s: name: %s: %s") % + LOG.error(_LE("Fetch and create failed for %s: name: %s: %s") % (obj_type, obj_uri, err)) if url.scheme == "glance": _image_refcount_adjust(temp_file, -1) @@ -1284,6 +1314,7 @@ self.task = task self.node = task.node self._state = states.DEPLOYWAIT + self._error = None self.ssh_connection = None self.running = True @@ -1292,10 +1323,36 @@ """Deployment state property""" return self._state + @property + def error(self): + """Deployment error property""" + return self._error + def run(self): """Start the thread """ LOG.debug("DeployStateChecker.run(): Connecting...") - client = utils.ssh_connect(self._get_ssh_dict()) + # Occasionally SSH connection fails, make three attempts + # before returning failure. + connection_attempt = 0 + while (connection_attempt < 3): + try: + connection_attempt += 1 + client = utils.ssh_connect(self._get_ssh_dict()) + break + except SSHException as err: + if connection_attempt < 3: + continue + else: + self._state = states.DEPLOYFAIL + self._error = str(err) + self.stop() + return + else: + self._state = states.DEPLOYFAIL + self._error = "Failed to establish SSH Connection with node." + self.stop() + return + channel = client.invoke_shell() channel.settimeout(0.0) channel.set_combine_stderr(True) @@ -1825,7 +1882,7 @@ # Check if AI Service exists, log message if already removed if not aiservice.exists: # There is nothing to clean up as service removed - LOG.info(_("AI Service %s already removed.") % (aiservice.name)) + LOG.info(_LI("AI Service %s already removed.") % (aiservice.name)) else: for mac in driver_utils.get_node_mac_addresses(task): # 1. Delete AI Client for this MAC Address @@ -1879,6 +1936,7 @@ driver=self.__class__.__name__, reason=_("Unable to locate usable ipmitool command in " "the system path when checking ipmitool version")) + ipmitool._check_temp_dir() def validate(self, task): """Check that 'driver_info' contains IPMI credentials. @@ -1913,7 +1971,7 @@ boot_devices.CDROM, boot_devices.BIOS, boot_devices.SAFE] elif cpu_arch == 'SPARC': - return [boot_devices.DISK, 'wanboot'] + return [boot_devices.DISK, boot_devices.WANBOOT] else: raise exception.InvalidParameterValue( _("Invalid node architecture of '%s'.") % (cpu_arch)) @@ -1942,6 +2000,14 @@ publishers = task.node.driver_info.get('publishers') fmri = task.node.driver_info.get('fmri') + if task.node.driver_info.get('ipmi_force_boot_device', False): + driver_utils.force_persistent_boot(task, + device, + persistent) + # Reset persistent to False, in case of BMC does not support + # persistent or we do not have admin rights. + persistent = False + if cpu_arch == 'x86': if device not in self.get_supported_boot_devices(task=task): raise exception.InvalidParameterValue(_( @@ -1951,7 +2017,7 @@ cmd.append("options=persistent") elif cpu_arch == 'SPARC': # Set bootmode script to network DHCP or disk - if device == 'wanboot': + if device == boot_devices.WANBOOT: boot_cmd = 'set /HOST/bootmode script="' script_str = 'boot net:dhcp - install' if archive_uri: @@ -2025,6 +2091,17 @@ """ LOG.debug("SolarisManagement.get_boot_device") + driver_info = task.node.driver_info + driver_internal_info = task.node.driver_internal_info + + if (driver_info.get('ipmi_force_boot_device', False) and + driver_internal_info.get('persistent_boot_device') and + driver_internal_info.get('is_next_boot_persistent', True)): + return { + 'boot_device': driver_internal_info['persistent_boot_device'], + 'persistent': True + } + cpu_arch = _get_node_architecture(task.node) driver_info = _parse_driver_info(task.node) response = {'boot_device': None, 'persistent': None} @@ -2067,7 +2144,7 @@ response['persistent'] = 'Options apply to all future boots' in out elif cpu_arch == 'SPARC': if "net:dhcp" in out: - response['boot_device'] = 'wanboot' + response['boot_device'] = boot_devices.WANBOOT else: response['boot_device'] = boot_devices.DISK LOG.debug(response) @@ -2141,11 +2218,26 @@ # Installed memory size is returned in GB, Nova assumes this is MB # so convert if returned in GB - memsize, memtype = propdict['memory_mb'].split(' ') - if memtype == 'GB': - propdict['memory_mb'] = int(memsize) * 1024 + try: + size_bytes = strutils.string_to_bytes( + propdict['memory_mb'].replace(' ', '')) + propdict['memory_mb'] = int(size_bytes / float(1 << 20)) + except ValueError: + # Size conversion failed, just ensure value is an int + propdict['memory_mb'] = int(propdict['memory_mb']) + + if propdict['local_gb'] == 'Not Available': + del propdict['local_gb'] else: - propdict['memory_mb'] = int(memsize) + # Local disk size can be returned with size type identifier + # remove identifier as this needs to be an int value + try: + size_bytes = strutils.string_to_bytes( + propdict['local_gb'].replace(' ', '')) + propdict['local_gb'] = int(size_bytes / float(1 << 30)) + except ValueError: + # Size conversion failed, just ensure value is an int + propdict['local_gb'] = int(propdict['local_gb']) cpu_props = self._get_cpu_cores(task, propdict['cpus']) diff -r 52081f923019 -r ea44e7e0ca98 components/openstack/ironic/files/drivers/solaris.py --- a/components/openstack/ironic/files/drivers/solaris.py Wed Sep 07 14:48:42 2016 -0700 +++ b/components/openstack/ironic/files/drivers/solaris.py Wed Sep 07 14:48:42 2016 -0700 @@ -16,11 +16,11 @@ """ Solaris Driver and supporting meta-classes. """ +from oslo_log import log as logging from ironic.drivers import base from ironic.drivers.modules import ipmitool from ironic.drivers.modules import solaris_ipmitool -from ironic.openstack.common import log as logging LOG = logging.getLogger(__name__) diff -r 52081f923019 -r ea44e7e0ca98 components/openstack/ironic/files/ironic-upgrade --- a/components/openstack/ironic/files/ironic-upgrade Wed Sep 07 14:48:42 2016 -0700 +++ b/components/openstack/ironic/files/ironic-upgrade Wed Sep 07 14:48:42 2016 -0700 @@ -26,84 +26,39 @@ from openstack_common import alter_mysql_tables, create_backups, modify_conf IRONIC_CONF_MAPPINGS = { - # Deprecated group/name - ('DEFAULT', 'amqp_durable_queues'): - ('oslo_messaging_qpid', 'amqp_durable_queues'), - ('DEFAULT', 'amqp_auto_delete'): - ('oslo_messaging_qpid', 'amqp_auto_delete'), - ('DEFAULT', 'rpc_conn_pool_size'): - ('oslo_messaging_qpid', 'rpc_conn_pool_size'), - ('DEFAULT', 'qpid_hostname'): - ('oslo_messaging_qpid', 'qpid_hostname'), - ('DEFAULT', 'qpid_port'): - ('oslo_messaging_qpid', 'qpid_port'), - ('DEFAULT', 'qpid_hosts'): - ('oslo_messaging_qpid', 'qpid_hosts'), - ('DEFAULT', 'qpid_username'): - ('oslo_messaging_qpid', 'qpid_username'), - ('DEFAULT', 'qpid_password'): - ('oslo_messaging_qpid', 'qpid_password'), - ('DEFAULT', 'qpid_sasl_mechanisms'): - ('oslo_messaging_qpid', 'qpid_sasl_mechanisms'), - ('DEFAULT', 'qpid_tcp_nodelay'): - ('oslo_messaging_qpid', 'qpid_tcp_nodelay'), - ('DEFAULT', 'qpid_heartbeat'): - ('oslo_messaging_qpid', 'qpid_heartbeat'), - ('DEFAULT', 'qpid_protocol'): - ('oslo_messaging_qpid', 'qpid_protocol'), - ('DEFAULT', 'qpid_receiver_capacity'): - ('oslo_messaging_qpid', 'qpid_receiver_capacity'), - ('DEFAULT', 'qpid_topology_version'): - ('oslo_messaging_qpid', 'qpid_topology_version'), - ('DEFAULT', 'kombu_ssl_version'): - ('oslo_messaging_rabbit', 'kombu_ssl_version'), - ('DEFAULT', 'kombu_ssl_keyfile'): - ('oslo_messaging_rabbit', 'kombu_ssl_keyfile'), - ('DEFAULT', 'kombu_ssl_certfile'): - ('oslo_messaging_rabbit', 'kombu_ssl_certfile'), - ('DEFAULT', 'kombu_ssl_ca_certs'): - ('oslo_messaging_rabbit', 'kombu_ssl_ca_certs'), - ('DEFAULT', 'kombu_reconnect_delay'): - ('oslo_messaging_rabbit', 'kombu_reconnect_delay'), - ('DEFAULT', 'rabbit_host'): - ('oslo_messaging_rabbit', 'rabbit_host'), - ('DEFAULT', 'rabbit_port'): - ('oslo_messaging_rabbit', 'rabbit_port'), - ('DEFAULT', 'rabbit_hosts'): - ('oslo_messaging_rabbit', 'rabbit_hosts'), - ('DEFAULT', 'rabbit_use_ssl'): - ('oslo_messaging_rabbit', 'rabbit_use_ssl'), - ('DEFAULT', 'rabbit_userid'): - ('oslo_messaging_rabbit', 'rabbit_userid'), - ('DEFAULT', 'rabbit_password'): - ('oslo_messaging_rabbit', 'rabbit_password'), - ('DEFAULT', 'rabbit_login_method'): - ('oslo_messaging_rabbit', 'rabbit_login_method'), - ('DEFAULT', 'rabbit_virtual_host'): - ('oslo_messaging_rabbit', 'rabbit_virtual_host'), - ('DEFAULT', 'rabbit_retry_interval'): - ('oslo_messaging_rabbit', 'rabbit_retry_interval'), - ('DEFAULT', 'rabbit_retry_backoff'): - ('oslo_messaging_rabbit', 'rabbit_retry_backoff'), - ('DEFAULT', 'rabbit_max_retries'): - ('oslo_messaging_rabbit', 'rabbit_max_retries'), - ('DEFAULT', 'rabbit_ha_queues'): - ('oslo_messaging_rabbit', 'rabbit_ha_queues'), - ('DEFAULT', 'fake_rabbit'): - ('oslo_messaging_rabbit', 'fake_rabbit'), - ('keystone_authtoken', 'admin_token'): (None, None), - ('keystone_authtoken', 'auth_admin_prefix'): (None, None), + # Deprecated group/name LIBERTY + ('DEFAULT', 'rpc_thread_pool_size'): + ('DEFAULT', 'executor_thread_pool_size'), ('DEFAULT', 'log_format'): (None, None), - ('DEFAULT', 'fake_rabbit'): (None, None), + ('DEFAULT', 'use_syslog'): (None, None), + ('agent', 'agent_pxe_append_params'): (None, None), + ('agent', 'agent_erase_devices_priority'): + ('deploy', 'erase_devices_priority'), + ('agent', 'agent_pxe_config_template'): (None, None), + ('agent', 'manage_tftp'): ('agent', 'manage_agent_boot'), + # Deprecated group/name MITAKA + ('profiler', 'profiler_enabled'): ('profiler', 'enabled'), } IRONIC_CONF_EXCEPTIONS = [ + ('DEFAULT', 'auth_strategy'), + ('DEFAULT', 'enabled_drivers'), + ('DEFAULT', 'pybasedir'), + ('DEFAULT', 'bindir'), + ('DEFAULT', 'state_path'), + ('ai', 'server'), + ('ai', 'username'), + ('api', 'api_workers'), + ('database', 'connection'), ('keystone_authtoken', 'admin_tenant_name'), ('keystone_authtoken', 'admin_user'), ('keystone_authtoken', 'admin_password'), + ('keystone_authtoken', 'auth_host'), + ('keystone_authtoken', 'auth_uri'), + ('keystone_authtoken', 'identity_uri'), ('keystone_authtoken', 'signing_dir'), - ('ai', 'server'), - ('ai', 'username'), + ('solaris_ipmi', 'imagecache_dirname'), + ('solaris_ipmi', 'imagecache_lock_timeout'), ] diff -r 52081f923019 -r ea44e7e0ca98 components/openstack/ironic/files/ironic.conf --- a/components/openstack/ironic/files/ironic.conf Wed Sep 07 14:48:42 2016 -0700 +++ b/components/openstack/ironic/files/ironic.conf Wed Sep 07 14:48:42 2016 -0700 @@ -1,92 +1,23 @@ [DEFAULT] # -# Options defined in oslo.messaging -# - -# ZeroMQ bind address. Should be a wildcard (*), an ethernet -# interface, or IP. The "host" option should point or resolve -# to this address. (string value) -#rpc_zmq_bind_address=* - -# MatchMaker driver. (string value) -#rpc_zmq_matchmaker=local - -# ZeroMQ receiver listening port. (integer value) -#rpc_zmq_port=9501 - -# Number of ZeroMQ contexts, defaults to 1. (integer value) -#rpc_zmq_contexts=1 - -# Maximum number of ingress messages to locally buffer per -# topic. Default is unlimited. (integer value) -#rpc_zmq_topic_backlog= - -# Directory for holding IPC sockets. (string value) -#rpc_zmq_ipc_dir=/var/run/openstack - -# Name of this node. Must be a valid hostname, FQDN, or IP -# address. Must match "host" option, if running Nova. (string -# value) -#rpc_zmq_host=ironic - -# Seconds to wait before a cast expires (TTL). Only supported -# by impl_zmq. (integer value) -#rpc_cast_timeout=30 - -# Heartbeat frequency. (integer value) -#matchmaker_heartbeat_freq=300 - -# Heartbeat time-to-live. (integer value) -#matchmaker_heartbeat_ttl=600 - -# Size of RPC thread pool. (integer value) -#rpc_thread_pool_size=64 - -# Driver or drivers to handle sending notifications. (multi -# valued) -#notification_driver= - -# AMQP topic used for OpenStack notifications. (list value) -# Deprecated group/name - [rpc_notifier2]/topics -#notification_topics=notifications - -# Seconds to wait for a response from a call. (integer value) -#rpc_response_timeout=60 - -# A URL representing the messaging driver to use and its full -# configuration. If not set, we fall back to the rpc_backend -# option and driver specific configuration. (string value) -#transport_url= - -# The messaging driver to use, defaults to rabbit. Other -# drivers include qpid and zmq. (string value) -#rpc_backend=rabbit - -# The default exchange under which topics are scoped. May be -# overridden by an exchange name specified in the -# transport_url option. (string value) -#control_exchange=openstack - - -# -# Options defined in ironic.netconf -# - -# IP address of this host. (string value) -#my_ip=10.0.0.1 - - -# # Options defined in ironic.api.app # -# Method to use for authentication: noauth or keystone. -# (string value) +# Authentication strategy used by ironic-api. "noauth" should +# not be used in a production environment because all +# authentication will be disabled. (string value) +# Possible values: noauth, keystone #auth_strategy=keystone +# Return server tracebacks in the API response for any error +# responses. WARNING: this is insecure and should not be used +# in a production environment. (boolean value) +#debug_tracebacks_in_api=false + # Enable pecan debug mode. WARNING: this is insecure and -# should not be used in production. (boolean value) +# should not be used in a production environment. (boolean +# value) #pecan_debug=false @@ -109,7 +40,10 @@ # Options defined in ironic.common.exception # -# Make exception message format errors fatal. (boolean value) +# Used if there is a formatting error when generating an +# exception message (a programming error). If True, raise an +# exception; if False, use the unformatted message. (boolean +# value) #fatal_exception_format_errors=false @@ -138,12 +72,17 @@ # (integer value) #hash_distribution_replicas=1 +# Interval (in seconds) between hash ring resets. (integer +# value) +#hash_ring_reset_interval=180 + # # Options defined in ironic.common.images # -# Force backing images to raw format. (boolean value) +# If True, convert backing images to "raw" disk image format. +# (boolean value) #force_raw_images=true # Path to isolinux binary file. (string value) @@ -178,15 +117,17 @@ # Options defined in ironic.common.service # -# Seconds between running periodic tasks. (integer value) +# Default interval (in seconds) for running driver periodic +# tasks. (integer value) +# This option is deprecated and planned for removal in a future release. #periodic_interval=60 -# Name of this node. This can be an opaque identifier. It is +# Name of this node. This can be an opaque identifier. It is # not necessarily a hostname, FQDN, or IP address. However, # the node name must be valid within an AMQP key, and if using # ZeroMQ, a valid hostname, FQDN, or IP address. (string # value) -#host=ironic +#host=localhost # @@ -197,9 +138,9 @@ # commands as root. (string value) #rootwrap_config=/etc/ironic/rootwrap.conf -# Explicitly specify the temporary working directory. (string -# value) -#tempdir= +# Temporary working directory, default is Python temp dir. +# (string value) +#tempdir=/tmp # @@ -212,16 +153,220 @@ # -# Options defined in ironic.drivers.modules.solaris_ipmitool +# Options defined in ironic.netconf # -# Method to use for authentication: noauth or keystone. +# IP address of this host. If unset, will determine the IP +# programmatically. If unable to do so, will use "127.0.0.1". # (string value) -#auth_strategy=keystone +#my_ip=10.0.0.1 # -# Options defined in ironic.openstack.common.eventlet_backdoor +# Options defined in oslo.log +# + +# If set to true, the logging level will be set to DEBUG +# instead of the default INFO level. (boolean value) +#debug=false + +# If set to false, the logging level will be set to WARNING +# instead of the default INFO level. (boolean value) +# This option is deprecated and planned for removal in a future release. +#verbose=true + +# The name of a logging configuration file. This file is +# appended to any existing logging configuration files. For +# details about logging configuration files, see the Python +# logging module documentation. Note that when logging +# configuration files are used then all logging configuration +# is set in the configuration file and other logging +# configuration options are ignored (for example, +# logging_context_format_string). (string value) +# Deprecated group/name - [DEFAULT]/log_config +#log_config_append= + +# Defines the format string for %%(asctime)s in log records. +# Default: %(default)s . This option is ignored if +# log_config_append is set. (string value) +#log_date_format=%Y-%m-%d %H:%M:%S + +# (Optional) Name of log file to send logging output to. If no +# default is set, logging will go to stderr as defined by +# use_stderr. This option is ignored if log_config_append is +# set. (string value) +# Deprecated group/name - [DEFAULT]/logfile +#log_file= + +# (Optional) The base directory used for relative log_file +# paths. This option is ignored if log_config_append is set. +# (string value) +# Deprecated group/name - [DEFAULT]/logdir +#log_dir= + +# Uses logging handler designed to watch file system. When log +# file is moved or removed this handler will open a new log +# file with specified path instantaneously. It makes sense +# only if log_file option is specified and Linux platform is +# used. This option is ignored if log_config_append is set. +# (boolean value) +#watch_log_file=false + +# Use syslog for logging. Existing syslog format is DEPRECATED +# and will be changed later to honor RFC5424. This option is +# ignored if log_config_append is set. (boolean value) +#use_syslog=false + +# Syslog facility to receive log lines. This option is ignored +# if log_config_append is set. (string value) +#syslog_log_facility=LOG_USER + +# Log output to standard error. This option is ignored if +# log_config_append is set. (boolean value) +#use_stderr=true + +# Format string to use for log messages with context. (string +# value) +#logging_context_format_string=%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s + +# Format string to use for log messages when context is +# undefined. (string value) +#logging_default_format_string=%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s + +# Additional data to append to log message when logging level +# for the message is DEBUG. (string value) +#logging_debug_format_suffix=%(funcName)s %(pathname)s:%(lineno)d + +# Prefix each line of exception output with this format. +# (string value) +#logging_exception_prefix=%(asctime)s.%(msecs)03d %(process)d ERROR %(name)s %(instance)s + +# Defines the format string for %(user_identity)s that is used +# in logging_context_format_string. (string value) +#logging_user_identity_format=%(user)s %(tenant)s %(domain)s %(user_domain)s %(project_domain)s + +# List of package logging levels in logger=LEVEL pairs. This +# option is ignored if log_config_append is set. (list value) +#default_log_levels=amqp=WARN,amqplib=WARN,boto=WARN,qpid=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,requests.packages.urllib3.util.retry=WARN,urllib3.util.retry=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN,taskflow=WARN,keystoneauth=WARN,oslo.cache=INFO,dogpile.core.dogpile=INFO + +# Enables or disables publication of error events. (boolean +# value) +#publish_errors=false + +# The format for an instance that is passed with the log +# message. (string value) +#instance_format="[instance: %(uuid)s] " + +# The format for an instance UUID that is passed with the log +# message. (string value) +#instance_uuid_format="[instance: %(uuid)s] " + +# Enables or disables fatal status of deprecations. (boolean +# value) +#fatal_deprecations=false + + +# +# Options defined in oslo.messaging +# + +# Size of RPC connection pool. (integer value) +# Deprecated group/name - [DEFAULT]/rpc_conn_pool_size +#rpc_conn_pool_size=30 + +# ZeroMQ bind address. Should be a wildcard (*), an ethernet +# interface, or IP. The "host" option should point or resolve +# to this address. (string value) +#rpc_zmq_bind_address=* + +# MatchMaker driver. (string value) +# Possible values: redis, dummy +#rpc_zmq_matchmaker=redis + +# Type of concurrency used. Either "native" or "eventlet" +# (string value) +#rpc_zmq_concurrency=eventlet + +# Number of ZeroMQ contexts, defaults to 1. (integer value) +#rpc_zmq_contexts=1 + +# Maximum number of ingress messages to locally buffer per +# topic. Default is unlimited. (integer value) +#rpc_zmq_topic_backlog= + +# Directory for holding IPC sockets. (string value) +#rpc_zmq_ipc_dir=/var/run/openstack + +# Name of this node. Must be a valid hostname, FQDN, or IP +# address. Must match "host" option, if running Nova. (string +# value) +#rpc_zmq_host=localhost + +# Seconds to wait before a cast expires (TTL). The default +# value of -1 specifies an infinite linger period. The value +# of 0 specifies no linger period. Pending messages shall be +# discarded immediately when the socket is closed. Only +# supported by impl_zmq. (integer value) +#rpc_cast_timeout=-1 + +# The default number of seconds that poll should wait. Poll +# raises timeout exception when timeout expired. (integer +# value) +#rpc_poll_timeout=1 + +# Expiration timeout in seconds of a name service record about +# existing target ( < 0 means no timeout). (integer value) +#zmq_target_expire=120 + +# Use PUB/SUB pattern for fanout methods. PUB/SUB always uses +# proxy. (boolean value) +#use_pub_sub=true + +# Minimal port number for random ports range. (port value) +# Possible values: 0-65535 +#rpc_zmq_min_port=49152 + +# Maximal port number for random ports range. (integer value) +# Possible values: 1-65536 +#rpc_zmq_max_port=65536 + +# Number of retries to find free port number before fail with +# ZMQBindError. (integer value) +#rpc_zmq_bind_port_retries=100 + +# Size of executor thread pool. (integer value) +# Deprecated group/name - [DEFAULT]/rpc_thread_pool_size +#executor_thread_pool_size=64 + +# Seconds to wait for a response from a call. (integer value) +#rpc_response_timeout=60 + +# A URL representing the messaging driver to use and its full +# configuration. If not set, we fall back to the rpc_backend +# option and driver specific configuration. (string value) +#transport_url= + +# The messaging driver to use, defaults to rabbit. Other +# drivers include amqp and zmq. (string value) +#rpc_backend=rabbit + +# The default exchange under which topics are scoped. May be +# overridden by an exchange name specified in the +# transport_url option. (string value) +#control_exchange=openstack + + +# +# Options defined in oslo.service.periodic_task +# + +# Some periodic tasks can be run in a separate process. Should +# we run them here? (boolean value) +#run_external_periodic_tasks=true + + +# +# Options defined in oslo.service.service # # Enable eventlet backdoor. Acceptable values are 0, , @@ -234,117 +379,60 @@ # service's log file. (string value) #backdoor_port= - -# -# Options defined in ironic.openstack.common.log -# - -# Print debugging output (set logging level to DEBUG instead -# of default WARNING level). (boolean value) -#debug=false - -# Print more verbose output (set logging level to INFO instead -# of default WARNING level). (boolean value) -#verbose=false - -# Log output to standard error. (boolean value) -#use_stderr=true - -# Format string to use for log messages with context. (string -# value) -#logging_context_format_string=%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s - -# Format string to use for log messages without context. -# (string value) -#logging_default_format_string=%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s - -# Data to append to log format when level is DEBUG. (string -# value) -#logging_debug_format_suffix=%(funcName)s %(pathname)s:%(lineno)d - -# Prefix each line of exception output with this format. -# (string value) -#logging_exception_prefix=%(asctime)s.%(msecs)03d %(process)d TRACE %(name)s %(instance)s - -# List of logger=LEVEL pairs. (list value) -#default_log_levels=amqp=WARN,amqplib=WARN,boto=WARN,qpid=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN - -# Enables or disables publication of error events. (boolean -# value) -#publish_errors=false - -# Enables or disables fatal status of deprecations. (boolean -# value) -#fatal_deprecations=false - -# The format for an instance that is passed with the log -# message. (string value) -#instance_format="[instance: %(uuid)s] " - -# The format for an instance UUID that is passed with the log -# message. (string value) -#instance_uuid_format="[instance: %(uuid)s] " - -# The name of a logging configuration file. This file is -# appended to any existing logging configuration files. For -# details about logging configuration files, see the Python -# logging module documentation. (string value) -# Deprecated group/name - [DEFAULT]/log_config -#log_config_append= - -# DEPRECATED. A logging.Formatter log message format string -# which may use any of the available logging.LogRecord -# attributes. This option is deprecated. Please use -# logging_context_format_string and -# logging_default_format_string instead. (string value) -#log_format= - -# Format string for %%(asctime)s in log records. Default: -# %(default)s . (string value) -#log_date_format=%Y-%m-%d %H:%M:%S - -# (Optional) Name of log file to output to. If no default is -# set, logging will go to stdout. (string value) -# Deprecated group/name - [DEFAULT]/logfile -#log_file= - -# (Optional) The base directory used for relative --log-file -# paths. (string value) -# Deprecated group/name - [DEFAULT]/logdir -#log_dir= - -# Use syslog for logging. Existing syslog format is DEPRECATED -# during I, and will change in J to honor RFC5424. (boolean -# value) -#use_syslog=false - -# (Optional) Enables or disables syslog rfc5424 format for -# logging. If enabled, prefixes the MSG part of the syslog -# message with APP-NAME (RFC5424). The format without the APP- -# NAME is deprecated in I, and will be removed in J. (boolean -# value) -#use_syslog_rfc_format=false - -# Syslog facility to receive log lines. (string value) -#syslog_log_facility=LOG_USER +# Enable eventlet backdoor, using the provided path as a unix +# socket that can receive connections. This option is mutually +# exclusive with 'backdoor_port' in that only one should be +# provided. If both are provided then the existence of this +# option overrides the usage of that option. (string value) +#backdoor_socket= + +# Enables or disables logging values of all registered options +# when starting a service (at DEBUG level). (boolean value) +#log_options=true + +# Specify a timeout after which a gracefully shutdown server +# will exit. Zero value means endless wait. (integer value) +#graceful_shutdown_timeout=60 # -# Options defined in ironic.openstack.common.periodic_task +# Options defined in oslo.service.wsgi # -# Some periodic tasks can be run in a separate process. Should -# we run them here? (boolean value) -#run_external_periodic_tasks=true - - -# -# Options defined in ironic.openstack.common.versionutils -# - -# Enables or disables fatal status of deprecations. (boolean +# File name for the paste.deploy config for api service +# (string value) +#api_paste_config=api-paste.ini + +# A python format string that is used as the template to +# generate log lines. The following values can beformatted +# into it: client_ip, date_time, request_line, status_code, +# body_length, wall_seconds. (string value) +#wsgi_log_format=%(client_ip)s "%(request_line)s" status: %(status_code)s len: %(body_length)s time: %(wall_seconds).7f + +# Sets the value of TCP_KEEPIDLE in seconds for each server +# socket. Not supported on OS X. (integer value) +#tcp_keepidle=600 + +# Size of the pool of greenthreads used by wsgi (integer # value) -#fatal_deprecations=false +#wsgi_default_pool_size=100 + +# Maximum line size of message headers to be accepted. +# max_header_line may need to be increased when using large +# tokens (typically those generated when keystone is +# configured to use PKI tokens with big service catalogs). +# (integer value) +#max_header_line=16384 + +# If False, closes the client socket connection explicitly. +# (boolean value) +#wsgi_keep_alive=true + +# Timeout for client connections' socket operations. If an +# incoming connection is idle for this number of seconds it +# will be closed. A value of '0' means wait forever. (integer +# value) +#client_socket_timeout=900 [agent] @@ -353,27 +441,38 @@ # Options defined in ironic.drivers.modules.agent # -# Additional append parameters for baremetal PXE boot. (string -# value) +# DEPRECATED. Additional append parameters for baremetal PXE +# boot. This option is deprecated and will be removed in +# Mitaka release. Please use [pxe]pxe_append_params instead. +# (string value) #agent_pxe_append_params=nofb nomodeset vga=normal -# Template file for PXE configuration. (string value) +# DEPRECATED. Template file for PXE configuration. This option +# is deprecated and will be removed in Mitaka release. Please +# use [pxe]pxe_config_template instead. (string value) #agent_pxe_config_template=$pybasedir/drivers/modules/agent_config.template -# Neutron bootfile DHCP parameter. (string value) -#agent_pxe_bootfile_name=pxelinux.0 - -# Priority to run in-band erase devices via the Ironic Python -# Agent ramdisk. If unset, will use the priority set in the -# ramdisk (defaults to 10 for the GenericHardwareManager). If -# set to 0, will not run during cleaning. (integer value) -#agent_erase_devices_priority= - -# Whether Ironic will manage TFTP files for the deploy -# ramdisks. If set to False, you will need to configure your -# own TFTP server that allows booting the deploy ramdisks. -# (boolean value) -#manage_tftp=true +# Whether Ironic will manage booting of the agent ramdisk. If +# set to False, you will need to configure your mechanism to +# allow booting the agent ramdisk. (boolean value) +# Deprecated group/name - [agent]/manage_tftp +#manage_agent_boot=true + +# The memory size in MiB consumed by agent when it is booted +# on a bare metal node. This is used for checking if the image +# can be downloaded and deployed on the bare metal node after +# booting agent ramdisk. This may be set according to the +# memory consumed by the agent ramdisk image. (integer value) +#memory_consumed_by_agent=0 + +# Whether the agent ramdisk should stream raw images directly +# onto the disk or not. By streaming raw images directly onto +# the disk the agent ramdisk will not spend time copying the +# image to a tmpfs partition (therefore consuming less memory) +# prior to writing it to the disk. Unless the disk where the +# image will be copied to is really slow, this option should +# be set to True. Defaults to True. (boolean value) +#stream_raw_images=true # @@ -384,6 +483,15 @@ # value) #heartbeat_timeout=300 +# Number of times to retry getting power state to check if +# bare metal node has been powered off after a soft power off. +# (integer value) +#post_deploy_get_power_state_retries=6 + +# Amount of time (in seconds) to wait between polling power +# state after trigger soft poweroff. (integer value) +#post_deploy_get_power_state_retry_interval=5 + # # Options defined in ironic.drivers.modules.agent_client @@ -438,10 +546,19 @@ # Options defined in ironic.drivers.modules.amt.common # -# Protocol used for AMT endpoint, support http/https (string -# value) +# Protocol used for AMT endpoint (string value) +# Possible values: http, https #protocol=http +# Time interval (in seconds) for successive awake call to AMT +# interface, this depends on the IdleTimeout setting on AMT +# interface. AMT Interface will go to sleep after 60 seconds +# of inactivity by default. IdleTimeout=0 means AMT will not +# go to sleep at all. Setting awake_interval=0 will disable +# awake call. (integer value) +# Minimum value: 0 +#awake_interval=60 + # # Options defined in ironic.drivers.modules.amt.power @@ -462,20 +579,87 @@ # Options defined in ironic.api # -# The listen IP for the Ironic API server. (string value) +# The IP address on which ironic-api listens. (string value) #host_ip=0.0.0.0 -# The port for the Ironic API server. (integer value) +# The TCP port on which ironic-api listens. (port value) +# Possible values: 0-65535 #port=6385 # The maximum number of items returned in a single response # from a collection resource. (integer value) #max_limit=1000 +# Public URL to use when building the links to the API +# resources (for example, "https://ironic.rocks:6384"). If +# None the links will be built using the request's host URL. +# If the API is operating behind a proxy, you will want to +# change this to represent the proxy's URL. Defaults to None. +# (string value) +#public_endpoint= + +# Number of workers for OpenStack Ironic API service. The +# default is equal to the number of CPUs available if that can +# be determined, else a default worker count of 1 is returned. +# (integer value) +api_workers=1 + +# Enable the integrated stand-alone API to service requests +# via HTTPS instead of HTTP. If there is a front-end service +# performing HTTPS offloading from the service, this option +# should be False; note, you will want to change public API +# endpoint to represent SSL termination URL with +# 'public_endpoint' option. (boolean value) +#enable_ssl_api=false + + +[cimc] + +# +# Options defined in ironic.drivers.modules.cimc.power +# + +# Number of times a power operation needs to be retried +# (integer value) +#max_retry=6 + +# Amount of time in seconds to wait in between power +# operations (integer value) +#action_interval=10 + + +[cisco_ucs] + +# +# Options defined in ironic.drivers.modules.ucs.power +# + +# Number of times a power operation needs to be retried +# (integer value) +#max_retry=6 + +# Amount of time in seconds to wait in between power +# operations (integer value) +#action_interval=5 + [conductor] # +# Options defined in ironic.conductor.base_manager +# + +# The size of the workers greenthread pool. Note that 2 +# threads will be reserved by the conductor itself for +# handling heart beats and periodic tasks. (integer value) +# Minimum value: 3 +#workers_pool_size=100 + +# Seconds between conductor heart beats. (integer value) +#heartbeat_interval=10 + + +# # Options defined in ironic.conductor.manager # @@ -484,11 +668,9 @@ # value) #api_url= -# Seconds between conductor heart beats. (integer value) -#heartbeat_interval=10 - # Maximum time (in seconds) since the last check-in of a -# conductor. (integer value) +# conductor. A conductor is considered inactive when this time +# has been exceeded. (integer value) #heartbeat_timeout=60 # Interval between syncing the node power state to the @@ -499,8 +681,8 @@ # (integer value) #check_provision_state_interval=60 -# Timeout (seconds) for waiting callback from deploy ramdisk. -# 0 - unlimited. (integer value) +# Timeout (seconds) to wait for a callback from a deploy +# ramdisk. Set to 0 to disable timeout. (integer value) #deploy_callback_timeout=1800 # During sync_power_state, should the hardware power state be @@ -519,9 +701,6 @@ # thread pool size. (integer value) #periodic_max_workers=8 -# The size of the workers greenthread pool. (integer value) -#workers_pool_size=100 - # Number of attempts to grab a node lock. (integer value) #node_locked_retry_attempts=3 @@ -536,8 +715,8 @@ # ceilometer via the notification bus. (integer value) #send_sensor_data_interval=600 -# List of comma separated metric types which need to be sent -# to Ceilometer. The default value, "ALL", is a special value +# List of comma separated meter types which need to be sent to +# Ceilometer. The default value, "ALL", is a special value # meaning send all the sensor data. (list value) #send_sensor_data_types=ALL @@ -560,11 +739,12 @@ # unlimited. (integer value) #inspect_timeout=1800 -# Cleaning is a configurable set of steps, such as erasing -# disk drives, that are performed on the node to ensure it is -# in a baseline state and ready to be deployed to. This is -# done after instance deletion, and during the transition from -# a "managed" to "available" state. When enabled, the +# Enables or disables automated cleaning. Automated cleaning +# is a configurable set of steps, such as erasing disk drives, +# that are performed on the node to ensure it is in a baseline +# state and ready to be deployed to. This is done after +# instance deletion as well as during the transition from a +# "manageable" to "available" state. When enabled, the # particular steps performed to clean a node depend on which # driver that node is managed by; see the individual driver's # documentation for details. NOTE: The introduction of the @@ -572,7 +752,14 @@ # significantly longer. In an environment where all tenants # are trusted (eg, because there is only one tenant), this # option could be safely disabled. (boolean value) -#clean_nodes=true +# Deprecated group/name - [conductor]/clean_nodes +#automated_clean=true + +# Timeout (seconds) to wait for a callback from the ramdisk +# doing the cleaning. If the timeout is reached the node will +# be put in the "clean failed" provision state. Set to 0 to +# disable timeout. (integer value) +#clean_callback_timeout=1800 [console] @@ -601,16 +788,88 @@ #subprocess_timeout=10 +[cors] + +# +# Options defined in oslo.middleware +# + +# Indicate whether this resource may be shared with the domain +# received in the requests "origin" header. (list value) +#allowed_origin= + +# Indicate that the actual request can include user +# credentials (boolean value) +#allow_credentials=true + +# Indicate which headers are safe to expose to the API. +# Defaults to HTTP Simple Headers. (list value) +#expose_headers=Content-Type,Cache-Control,Content-Language,Expires,Last-Modified,Pragma + +# Maximum cache age of CORS preflight requests. (integer +# value) +#max_age=3600 + +# Indicate which methods can be used during the actual +# request. (list value) +#allow_methods=GET,POST,PUT,DELETE,OPTIONS + +# Indicate which header field names may be used during the +# actual request. (list value) +#allow_headers=Content-Type,Cache-Control,Content-Language,Expires,Last-Modified,Pragma + + +[cors.subdomain] + +# +# Options defined in oslo.middleware +# + +# Indicate whether this resource may be shared with the domain +# received in the requests "origin" header. (list value) +#allowed_origin= + +# Indicate that the actual request can include user +# credentials (boolean value) +#allow_credentials=true + +# Indicate which headers are safe to expose to the API. +# Defaults to HTTP Simple Headers. (list value) +#expose_headers=Content-Type,Cache-Control,Content-Language,Expires,Last-Modified,Pragma + +# Maximum cache age of CORS preflight requests. (integer +# value) +#max_age=3600 + +# Indicate which methods can be used during the actual +# request. (list value) +#allow_methods=GET,POST,PUT,DELETE,OPTIONS + +# Indicate which header field names may be used during the +# actual request. (list value) +#allow_headers=Content-Type,Cache-Control,Content-Language,Expires,Last-Modified,Pragma + + [database] # +# Options defined in ironic.db.sqlalchemy.models +# + +# MySQL engine to use. (string value) +#mysql_engine=InnoDB + + +# # Options defined in oslo.db # # The file name to use with SQLite. (string value) +# Deprecated group/name - [DEFAULT]/sqlite_db #sqlite_db=oslo.sqlite # If True, SQLite uses synchronous mode. (boolean value) +# Deprecated group/name - [DEFAULT]/sqlite_synchronous #sqlite_synchronous=true # The back end to use for the database. (string value) @@ -622,7 +881,7 @@ # Deprecated group/name - [DEFAULT]/sql_connection # Deprecated group/name - [DATABASE]/sql_connection # Deprecated group/name - [sql]/connection -#connection= +connection=mysql://%SERVICE_USER%:%SERVICE_PASSWORD%@localhost/ironic # The SQLAlchemy connection string to use to connect to the # slave database. (string value) @@ -635,12 +894,6 @@ # value) #mysql_sql_mode=TRADITIONAL -# This configures the MySQL storage engine. This allows for OpenStack to -# support different storage engines such as InnoDB, NDB, etc. By Default, -# this value will be set to InnoDB. For MySQL Cluster, set to NDBCLUSTER. -# Example: mysql_storage_engine=(string value) -#mysql_storage_engine = InnoDB - # Timeout before idle SQL connections are reaped. (integer # value) # Deprecated group/name - [DEFAULT]/sql_idle_timeout @@ -677,7 +930,7 @@ # (integer value) # Deprecated group/name - [DEFAULT]/sql_max_overflow # Deprecated group/name - [DATABASE]/sqlalchemy_max_overflow -#max_overflow= +#max_overflow=50 # Verbosity of SQL debugging information: 0=None, # 100=Everything. (integer value) @@ -717,31 +970,32 @@ #db_max_retries=20 -# -# Options defined in ironic.db.sqlalchemy.models -# - -# MySQL engine to use. (string value) -#mysql_engine=InnoDB - - [deploy] # # Options defined in ironic.drivers.modules.deploy_utils # -# Size of EFI system partition in MiB when configuring UEFI -# systems for local boot. (integer value) -#efi_system_partition_size=200 - -# Block size to use when writing to the nodes disk. (string +# ironic-conductor node's HTTP server URL. Example: +# http://192.1.2.3:8080 (string value) +# Deprecated group/name - [pxe]/http_url +#http_url= + +# ironic-conductor node's HTTP root path. (string value) +# Deprecated group/name - [pxe]/http_root +#http_root=/httpboot + +# Priority to run in-band erase devices via the Ironic Python +# Agent ramdisk. If unset, will use the priority set in the +# ramdisk (defaults to 10 for the GenericHardwareManager). If +# set to 0, will not run during cleaning. (integer value) +# Deprecated group/name - [agent]/agent_erase_devices_priority +#erase_devices_priority= + +# Number of iterations to be run for erasing devices. (integer # value) -#dd_block_size=1M - -# Maximum attempts to verify an iSCSI connection is active, -# sleeping 1 second between attempts. (integer value) -#iscsi_verify_attempts=3 +# Deprecated group/name - [agent]/agent_erase_devices_iterations +#erase_devices_iterations=1 [dhcp] @@ -755,30 +1009,10 @@ #dhcp_provider=neutron -[discoverd] - -# -# Options defined in ironic.drivers.modules.discoverd -# - -# whether to enable inspection using ironic-discoverd (boolean -# value) -#enabled=false - -# ironic-discoverd HTTP endpoint. If this is not set, the -# ironic-discoverd client default (http://127.0.0.1:5050) will -# be used. (string value) -#service_url= - -# period (in seconds) to check status of nodes on inspection -# (integer value) -#status_check_period=60 - - [disk_partitioner] # -# Options defined in ironic.common.disk_partitioner +# Options defined in ironic_lib.disk_partitioner # # After Ironic has completed creating the partition table, it @@ -794,6 +1028,28 @@ #check_device_max_retries=20 +[disk_utils] + +# +# Options defined in ironic_lib.disk_utils +# + +# Size of EFI system partition in MiB when configuring UEFI +# systems for local boot. (integer value) +# Deprecated group/name - [deploy]/efi_system_partition_size +#efi_system_partition_size=200 + +# Block size to use when writing to the nodes disk. (string +# value) +# Deprecated group/name - [deploy]/dd_block_size +#dd_block_size=1M + +# Maximum attempts to verify an iSCSI connection is active, +# sleeping 1 second between attempts. (integer value) +# Deprecated group/name - [deploy]/iscsi_verify_attempts +#iscsi_verify_attempts=3 + + [glance] # @@ -812,37 +1068,59 @@ # The length of time in seconds that the temporary URL will be # valid for. Defaults to 20 minutes. If some deploys get a 401 # response code when trying to download from the temporary -# URL, try raising this duration. (integer value) +# URL, try raising this duration. This value must be greater +# than or equal to the value for +# swift_temp_url_expected_download_start_delay (integer value) #swift_temp_url_duration=1200 +# Whether to cache generated Swift temporary URLs. Setting it +# to true is only useful when an image caching proxy is used. +# Defaults to False. (boolean value) +#swift_temp_url_cache_enabled=false + +# This is the delay (in seconds) from the time of the deploy +# request (when the Swift temporary URL is generated) to when +# the IPA ramdisk starts up and URL is used for the image +# download. This value is used to check if the Swift temporary +# URL duration is large enough to let the image download +# begin. Also if temporary URL caching is enabled this will +# determine if a cached entry will still be valid when the +# download starts. swift_temp_url_duration value must be +# greater than or equal to this option's value. Defaults to 0. +# (integer value) +# Minimum value: 0 +#swift_temp_url_expected_download_start_delay=0 + # The "endpoint" (scheme, hostname, optional port) for the # Swift URL of the form -# "endpoint_url/api_version/account/container/object_id". Do +# "endpoint_url/api_version/[account/]container/object_id". Do # not include trailing "/". For example, use -# "https://swift.example.com". Required for temporary URLs. -# (string value) +# "https://swift.example.com". If using RADOS Gateway, +# endpoint may also contain /swift path; if it does not, it +# will be appended. Required for temporary URLs. (string +# value) #swift_endpoint_url= # The Swift API version to create a temporary URL for. # Defaults to "v1". Swift temporary URL format: -# "endpoint_url/api_version/account/container/object_id" +# "endpoint_url/api_version/[account/]container/object_id" # (string value) #swift_api_version=v1 # The account that Glance uses to communicate with Swift. The # format is "AUTH_uuid". "uuid" is the UUID for the account # configured in the glance-api.conf. Required for temporary -# URLs. For example: +# URLs when Glance backend is Swift. For example: # "AUTH_a422b2-91f3-2f46-74b7-d7c9e8958f5d30". Swift temporary # URL format: -# "endpoint_url/api_version/account/container/object_id" +# "endpoint_url/api_version/[account/]container/object_id" # (string value) #swift_account= # The Swift container Glance is configured to store its images # in. Defaults to "glance", which is the default in glance- # api.conf. Swift temporary URL format: -# "endpoint_url/api_version/account/container/object_id" +# "endpoint_url/api_version/[account/]container/object_id" # (string value) #swift_container=glance @@ -855,6 +1133,12 @@ # value) #swift_store_multiple_containers_seed=0 +# Type of endpoint to use for temporary URLs. If the Glance +# backend is Swift, use "swift"; if it is CEPH with RADOS +# gateway, use "radosgw". (string value) +# Possible values: swift, radosgw +#temp_url_endpoint_type=swift + # # Options defined in ironic.common.image_service @@ -863,11 +1147,13 @@ # Default glance hostname or IP address. (string value) #glance_host=$my_ip -# Default glance port. (integer value) +# Default glance port. (port value) +# Possible values: 0-65535 #glance_port=9292 # Default protocol to use when connecting to glance. Set to # https for SSL. (string value) +# Possible values: http, https #glance_protocol=http # A list of the glance api servers available to ironic. Prefix @@ -884,10 +1170,34 @@ #glance_num_retries=0 # Authentication strategy to use when connecting to glance. -# Only "keystone" and "noauth" are currently supported by -# ironic. (string value) +# (string value) +# Possible values: keystone, noauth #auth_strategy=keystone +# Optional path to a CA certificate bundle to be used to +# validate the SSL certificate served by glance. It is used +# when glance_api_insecure is set to False. (string value) +#glance_cafile= + + +[iboot] + +# +# Options defined in ironic.drivers.modules.iboot +# + +# Maximum retries for iBoot operations (integer value) +#max_retry=3 + +# Time (in seconds) between retry attempts for iBoot +# operations (integer value) +#retry_interval=1 + +# Time (in seconds) to sleep between when rebooting (powering +# off and on again). (integer value) +# Minimum value: 0 +#reboot_delay=5 + [ilo] @@ -898,7 +1208,8 @@ # Timeout (in seconds) for iLO operations (integer value) #client_timeout=60 -# Port to be used for iLO operations (integer value) +# Port to be used for iLO operations (port value) +# Possible values: 0-65535 #client_port=443 # The Swift iLO container to store data. (string value) @@ -908,6 +1219,14 @@ # (integer value) #swift_object_expiry_timeout=900 +# Set this to True to use http web server to host floppy +# images and generated boot ISO. This requires http_root and +# http_url to be configured in the [deploy] section of the +# config file. If this is set to False, then Ironic will use +# Swift to host the floppy images and generated boot_iso. +# (boolean value) +#use_web_server_for_images=false + # # Options defined in ironic.drivers.modules.ilo.deploy @@ -924,19 +1243,19 @@ # # Priority for reset_ilo clean step. (integer value) -#clean_priority_reset_ilo=1 +#clean_priority_reset_ilo=0 # Priority for reset_bios_to_default clean step. (integer # value) #clean_priority_reset_bios_to_default=10 # Priority for reset_secure_boot_keys clean step. This step -# will reset the secure boot keys to manufacturing defaults. +# will reset the secure boot keys to manufacturing defaults. # (integer value) #clean_priority_reset_secure_boot_keys_to_default=20 # Priority for clear_secure_boot_keys clean step. This step is -# not enabled by default. It can be enabled to to clear all +# not enabled by default. It can be enabled to clear all # secure boot keys enrolled with iLO. (integer value) #clean_priority_clear_secure_boot_keys=0 @@ -959,6 +1278,29 @@ #power_wait=2 +[inspector] + +# +# Options defined in ironic.drivers.modules.inspector +# + +# whether to enable inspection using ironic-inspector (boolean +# value) +# Deprecated group/name - [discoverd]/enabled +#enabled=false + +# ironic-inspector HTTP endpoint. If this is not set, the +# ironic-inspector client default (http://127.0.0.1:5050) will +# be used. (string value) +# Deprecated group/name - [discoverd]/service_url +#service_url= + +# period (in seconds) to check status of nodes on inspection +# (integer value) +# Deprecated group/name - [discoverd]/status_check_period +#status_check_period=60 + + [ipmi] # @@ -983,24 +1325,80 @@ [irmc] # +# Options defined in ironic.drivers.modules.irmc.boot +# + +# Ironic conductor node's "NFS" or "CIFS" root path (string +# value) +#remote_image_share_root=/remote_image_share_root + +# IP of remote image server (string value) +#remote_image_server= + +# Share type of virtual media (string value) +# Possible values: CIFS, NFS +#remote_image_share_type=CIFS + +# share name of remote_image_server (string value) +#remote_image_share_name=share + +# User name of remote_image_server (string value) +#remote_image_user_name= + +# Password of remote_image_user_name (string value) +#remote_image_user_password= + +# Domain name of remote_image_user_name (string value) +#remote_image_user_domain= + + +# # Options defined in ironic.drivers.modules.irmc.common # -# Port to be used for iRMC operations, either 80 or 443 -# (integer value) +# Port to be used for iRMC operations (port value) +# Possible values: 443, 80 #port=443 -# Authentication method to be used for iRMC operations, either -# "basic" or "digest" (string value) +# Authentication method to be used for iRMC operations (string +# value) +# Possible values: basic, digest #auth_method=basic # Timeout (in seconds) for iRMC operations (integer value) #client_timeout=60 -# Sensor data retrieval method, either "ipmitool" or "scci" -# (string value) +# Sensor data retrieval method. (string value) +# Possible values: ipmitool, scci #sensor_method=ipmitool +# SNMP protocol version (string value) +# Possible values: v1, v2c, v3 +#snmp_version=v2c + +# SNMP port (port value) +# Possible values: 0-65535 +#snmp_port=161 + +# SNMP community. Required for versions "v1" and "v2c" (string +# value) +#snmp_community=public + +# SNMP security name. Required for version "v3" (string value) +#snmp_security= + + +[ironic_lib] + +# +# Options defined in ironic_lib.utils +# + +# Command that is prefixed to commands that are run as root. +# If not specified, no commands are run as root. (string +# value) +#root_helper=sudo ironic-rootwrap /etc/ironic/rootwrap.conf + [keystone] @@ -1008,7 +1406,7 @@ # Options defined in ironic.common.keystone # -# The region used for getting endpoints of OpenStackservices. +# The region used for getting endpoints of OpenStack services. # (string value) #region_name= @@ -1020,7 +1418,7 @@ # # Complete public Identity API endpoint. (string value) -#auth_uri= +auth_uri=http://127.0.0.1:5000/v2.0/ # API version of the admin Identity API endpoint. (string # value) @@ -1057,6 +1455,10 @@ # Verify HTTPS connections. (boolean value) #insecure=false +# The region in which the identity server can be found. +# (string value) +#region_name= + # Directory used to cache files related to PKI tokens. (string # value) signing_dir=$state_path/keystone-signing @@ -1064,7 +1466,7 @@ # Optionally specify a list of memcached server(s) to use for # caching. If left undefined, tokens will instead be cached # in-process. (list value) -# Deprecated group/name - [DEFAULT]/memcache_servers +# Deprecated group/name - [keystone_authtoken]/memcache_servers #memcached_servers= # In order to prevent excessive effort spent validating @@ -1081,13 +1483,13 @@ #revocation_cache_time=10 # (Optional) If defined, indicate whether token data should be -# authenticated or authenticated and encrypted. Acceptable -# values are MAC or ENCRYPT. If MAC, token data is -# authenticated (with HMAC) in the cache. If ENCRYPT, token -# data is encrypted and authenticated in the cache. If the -# value is not one of these options or empty, auth_token will -# raise an exception on initialization. (string value) -#memcache_security_strategy= +# authenticated or authenticated and encrypted. If MAC, token +# data is authenticated (with HMAC) in the cache. If ENCRYPT, +# token data is encrypted and authenticated in the cache. If +# the value is not one of these options or empty, auth_token +# will raise an exception on initialization. (string value) +# Possible values: None, MAC, ENCRYPT +#memcache_security_strategy=None # (Optional, mandatory if memcache_security_strategy is # defined) This string is used for key derivation. (string @@ -1103,7 +1505,7 @@ #memcache_pool_maxsize=10 # (Optional) Socket timeout in seconds for communicating with -# a memcache server. (integer value) +# a memcached server. (integer value) #memcache_pool_socket_timeout=3 # (Optional) Number of seconds a connection to memcached is @@ -1111,11 +1513,11 @@ #memcache_pool_unused_timeout=60 # (Optional) Number of seconds that an operation will wait to -# get a memcache client connection from the pool. (integer +# get a memcached client connection from the pool. (integer # value) #memcache_pool_conn_get_timeout=10 -# (Optional) Use the advanced (eventlet safe) memcache client +# (Optional) Use the advanced (eventlet safe) memcached client # pool. The advanced pool will only work under python 2.x. # (boolean value) #memcache_use_advanced_pool=false @@ -1154,50 +1556,26 @@ # (list value) #hash_algorithms=md5 -# Prefix to prepend at the beginning of the path. Deprecated, -# use identity_uri. (string value) -#auth_admin_prefix= - -# Host providing the admin Identity API endpoint. Deprecated, -# use identity_uri. (string value) -#auth_host=127.0.0.1 - -# Port of the admin Identity API endpoint. Deprecated, use -# identity_uri. (integer value) -#auth_port=35357 - -# Protocol of the admin Identity API endpoint (http or https). -# Deprecated, use identity_uri. (string value) -#auth_protocol=https - -# Complete admin Identity API endpoint. This should specify -# the unversioned root endpoint e.g. https://localhost:35357/ -# (string value) -#identity_uri= - -# This option is deprecated and may be removed in a future -# release. Single shared secret with the Keystone -# configuration used for bootstrapping a Keystone -# installation, or otherwise bypassing the normal -# authentication process. This option should not be used, use -# `admin_user` and `admin_password` instead. (string value) -#admin_token= +# Authentication type to load (type of value is unknown) +# Deprecated group/name - [keystone_authtoken]/auth_plugin +#auth_type= + +# Config Section from which to load plugin specific options +# (type of value is unknown) +#auth_section= + +# Complete admin Identity API endpoint. This should specify the unversioned +# root endpoint e.g. https://localhost:35357/ (string value) +identity_uri = http://127.0.0.1:35357/ # Service username. (string value) -admin_user=%SERVICE_USER% +admin_user = %SERVICE_USER% # Service user password. (string value) -admin_password=%SERVICE_PASSWORD% +admin_password = %SERVICE_PASSWORD% # Service tenant name. (string value) -admin_tenant_name=%SERVICE_TENANT_NAME% - -# Name of the plugin to load (string value) -#auth_plugin= - -# Config Section from which to load plugin specific options -# (string value) -#auth_section= +admin_tenant_name = %SERVICE_TENANT_NAME% [matchmaker_redis] @@ -1209,22 +1587,30 @@ # Host to locate redis. (string value) #host=127.0.0.1 -# Use this port to connect to redis host. (integer value) +# Use this port to connect to redis host. (port value) +# Possible values: 0-65535 #port=6379 # Password for Redis server (optional). (string value) -#password= - - -[matchmaker_ring] - -# -# Options defined in oslo.messaging -# - -# Matchmaker ring file (JSON). (string value) -# Deprecated group/name - [DEFAULT]/matchmaker_ringfile -#ringfile=/etc/oslo/matchmaker_ring.json +#password= + +# List of Redis Sentinel hosts (fault tolerance mode) e.g. +# [host:port, host1:port ... ] (list value) +#sentinel_hosts= + +# Redis replica set name. (string value) +#sentinel_group_name=oslo-messaging-zeromq + +# Time in ms to wait between connection attempts. (integer +# value) +#wait_timeout=500 + +# Time in ms to wait before the transaction is killed. +# (integer value) +#check_timeout=20000 + +# Timeout in ms on blocking socket operations (integer value) +#socket_timeout=1000 [neutron] @@ -1245,16 +1631,42 @@ #retries=3 # Default authentication strategy to use when connecting to -# neutron. Can be either "keystone" or "noauth". Running -# neutron in noauth mode (related to but not affected by this -# setting) is insecure and should only be used for testing. -# (string value) +# neutron. Running neutron in noauth mode (related to but not +# affected by this setting) is insecure and should only be +# used for testing. (string value) +# Possible values: keystone, noauth #auth_strategy=keystone -# UUID of the network to create Neutron ports on when booting -# to a ramdisk for cleaning/zapping using Neutron DHCP (string +# UUID of the network to create Neutron ports on, when booting +# to a ramdisk for cleaning using Neutron DHCP. (string value) +#cleaning_network_uuid= + + +[oneview] + +# +# Options defined in ironic.drivers.modules.oneview.common +# + +# URL where OneView is available (string value) +#manager_url= + +# OneView username to be used (string value) +#username= + +# OneView password to be used (string value) +#password= + +# Option to allow insecure connection with OneView (boolean # value) -#cleaning_network_uuid= +#allow_insecure_connections=false + +# Path to CA certificate (string value) +#tls_cacert_file= + +# Max connection retries to check changes on OneView (integer +# value) +#max_polling_attempts=12 [oslo_concurrency] @@ -1264,6 +1676,7 @@ # # Enables or disables inter-process locks. (boolean value) +# Deprecated group/name - [DEFAULT]/disable_process_locking #disable_process_locking=false # Directory to use for lock files. For security, the @@ -1271,7 +1684,8 @@ # running the processes that need locking. Defaults to # environment variable OSLO_LOCK_PATH. If external locks are # used, a lock path must be set. (string value) -#lock_path= +# Deprecated group/name - [DEFAULT]/lock_path +lock_path=$state_path/lock [oslo_messaging_amqp] @@ -1282,102 +1696,102 @@ # address prefix used when sending to a specific server # (string value) +# Deprecated group/name - [amqp1]/server_request_prefix #server_request_prefix=exclusive # address prefix used when broadcasting to all servers (string # value) +# Deprecated group/name - [amqp1]/broadcast_prefix #broadcast_prefix=broadcast # address prefix when sending to any server in group (string # value) +# Deprecated group/name - [amqp1]/group_request_prefix #group_request_prefix=unicast # Name for the AMQP container (string value) +# Deprecated group/name - [amqp1]/container_name #container_name= # Timeout for inactive connections (in seconds) (integer # value) +# Deprecated group/name - [amqp1]/idle_timeout #idle_timeout=0 # Debug: dump AMQP frames to stdout (boolean value) +# Deprecated group/name - [amqp1]/trace #trace=false -# CA certificate PEM file for verifing server certificate -# (string value) +# CA certificate PEM file to verify server certificate (string +# value) +# Deprecated group/name - [amqp1]/ssl_ca_file #ssl_ca_file= # Identifying certificate PEM file to present to clients # (string value) +# Deprecated group/name - [amqp1]/ssl_cert_file #ssl_cert_file= # Private key PEM file used to sign cert_file certificate # (string value) +# Deprecated group/name - [amqp1]/ssl_key_file #ssl_key_file= # Password for decrypting ssl_key_file (if encrypted) (string # value) +# Deprecated group/name - [amqp1]/ssl_key_password #ssl_key_password= # Accept clients using either SSL or plain TCP (boolean value) +# Deprecated group/name - [amqp1]/allow_insecure_clients #allow_insecure_clients=false - -[oslo_messaging_qpid] +# Space separated list of acceptable SASL mechanisms (string +# value) +# Deprecated group/name - [amqp1]/sasl_mechanisms +#sasl_mechanisms= + +# Path to directory that contains the SASL configuration +# (string value) +# Deprecated group/name - [amqp1]/sasl_config_dir +#sasl_config_dir= + +# Name of configuration file (without .conf suffix) (string +# value) +# Deprecated group/name - [amqp1]/sasl_config_name +#sasl_config_name= + +# User name for message broker authentication (string value) +# Deprecated group/name - [amqp1]/username +#username= + +# Password for message broker authentication (string value) +# Deprecated group/name - [amqp1]/password +#password= + + +[oslo_messaging_notifications] # # Options defined in oslo.messaging # -# Use durable queues in AMQP. (boolean value) -# Deprecated group/name - [DEFAULT]/rabbit_durable_queues -#amqp_durable_queues=false - -# Auto-delete queues in AMQP. (boolean value) -#amqp_auto_delete=false - -# Size of RPC connection pool. (integer value) -#rpc_conn_pool_size=30 - -# Qpid broker hostname. (string value) -#qpid_hostname=localhost - -# Qpid broker port. (integer value) -#qpid_port=5672 - -# Qpid HA cluster host:port pairs. (list value) -#qpid_hosts=$qpid_hostname:$qpid_port - -# Username for Qpid connection. (string value) -#qpid_username= - -# Password for Qpid connection. (string value) -#qpid_password= - -# Space separated list of SASL mechanisms to use for auth. -# (string value) -#qpid_sasl_mechanisms= - -# Seconds between connection keepalive heartbeats. (integer -# value) -#qpid_heartbeat=60 - -# Transport to use, either 'tcp' or 'ssl'. (string value) -#qpid_protocol=tcp - -# Whether to disable the Nagle algorithm. (boolean value) -#qpid_tcp_nodelay=true - -# The number of prefetched messages held by receiver. (integer -# value) -#qpid_receiver_capacity=1 - -# The qpid topology version to use. Version 1 is what was -# originally used by impl_qpid. Version 2 includes some -# backwards-incompatible changes that allow broker federation -# to work. Users should update to version 2 when they are -# able to take everything down, as it requires a clean break. -# (integer value) -#qpid_topology_version=1 +# The Drivers(s) to handle sending notifications. Possible +# values are messaging, messagingv2, routing, log, test, noop +# (multi valued) +# Deprecated group/name - [DEFAULT]/notification_driver +#driver= + +# A URL representing the messaging driver to use for +# notifications. If not set, we fall back to the same +# configuration used for RPC. (string value) +# Deprecated group/name - [DEFAULT]/notification_transport_url +#transport_url= + +# AMQP topic used for OpenStack notifications. (list value) +# Deprecated group/name - [rpc_notifier2]/topics +# Deprecated group/name - [DEFAULT]/notification_topics +#topics=notifications [oslo_messaging_rabbit] @@ -1387,58 +1801,89 @@ # # Use durable queues in AMQP. (boolean value) +# Deprecated group/name - [DEFAULT]/amqp_durable_queues # Deprecated group/name - [DEFAULT]/rabbit_durable_queues #amqp_durable_queues=false # Auto-delete queues in AMQP. (boolean value) +# Deprecated group/name - [DEFAULT]/amqp_auto_delete #amqp_auto_delete=false -# Size of RPC connection pool. (integer value) -#rpc_conn_pool_size=30 - # SSL version to use (valid only if SSL enabled). Valid values # are TLSv1 and SSLv23. SSLv2, SSLv3, TLSv1_1, and TLSv1_2 may # be available on some distributions. (string value) +# Deprecated group/name - [DEFAULT]/kombu_ssl_version #kombu_ssl_version= # SSL key file (valid only if SSL enabled). (string value) +# Deprecated group/name - [DEFAULT]/kombu_ssl_keyfile #kombu_ssl_keyfile= # SSL cert file (valid only if SSL enabled). (string value) +# Deprecated group/name - [DEFAULT]/kombu_ssl_certfile #kombu_ssl_certfile= # SSL certification authority file (valid only if SSL # enabled). (string value) +# Deprecated group/name - [DEFAULT]/kombu_ssl_ca_certs #kombu_ssl_ca_certs= # How long to wait before reconnecting in response to an AMQP # consumer cancel notification. (floating point value) +# Deprecated group/name - [DEFAULT]/kombu_reconnect_delay #kombu_reconnect_delay=1.0 +# EXPERIMENTAL: Possible values are: gzip, bz2. If not set +# compression will not be used. This option may notbe +# available in future versions. (string value) +#kombu_compression= + +# How long to wait a missing client beforce abandoning to send +# it its replies. This value should not be longer than +# rpc_response_timeout. (integer value) +# Deprecated group/name - [oslo_messaging_rabbit]/kombu_reconnect_timeout +#kombu_missing_consumer_retry_timeout=60 + +# Determines how the next RabbitMQ node is chosen in case the +# one we are currently connected to becomes unavailable. Takes +# effect only if more than one RabbitMQ node is provided in +# config. (string value) +# Possible values: round-robin, shuffle +#kombu_failover_strategy=round-robin + # The RabbitMQ broker address where a single node is used. # (string value) +# Deprecated group/name - [DEFAULT]/rabbit_host #rabbit_host=localhost -# The RabbitMQ broker port where a single node is used. -# (integer value) +# The RabbitMQ broker port where a single node is used. (port +# value) +# Possible values: 0-65535 +# Deprecated group/name - [DEFAULT]/rabbit_port #rabbit_port=5672 # RabbitMQ HA cluster host:port pairs. (list value) +# Deprecated group/name - [DEFAULT]/rabbit_hosts #rabbit_hosts=$rabbit_host:$rabbit_port # Connect over SSL for RabbitMQ. (boolean value) +# Deprecated group/name - [DEFAULT]/rabbit_use_ssl #rabbit_use_ssl=false # The RabbitMQ userid. (string value) +# Deprecated group/name - [DEFAULT]/rabbit_userid #rabbit_userid=guest # The RabbitMQ password. (string value) +# Deprecated group/name - [DEFAULT]/rabbit_password #rabbit_password=guest # The RabbitMQ login method. (string value) +# Deprecated group/name - [DEFAULT]/rabbit_login_method #rabbit_login_method=AMQPLAIN # The RabbitMQ virtual host. (string value) +# Deprecated group/name - [DEFAULT]/rabbit_virtual_host #rabbit_virtual_host=/ # How frequently to retry connecting with RabbitMQ. (integer @@ -1447,22 +1892,44 @@ # How long to backoff for between retries when connecting to # RabbitMQ. (integer value) +# Deprecated group/name - [DEFAULT]/rabbit_retry_backoff #rabbit_retry_backoff=2 +# Maximum interval of RabbitMQ connection retries. Default is +# 30 seconds. (integer value) +#rabbit_interval_max=30 + # Maximum number of RabbitMQ connection retries. Default is 0 # (infinite retry count). (integer value) +# Deprecated group/name - [DEFAULT]/rabbit_max_retries #rabbit_max_retries=0 -# Use HA queues in RabbitMQ (x-ha-policy: all). If you change -# this option, you must wipe the RabbitMQ database. (boolean -# value) +# Try to use HA queues in RabbitMQ (x-ha-policy: all). If you +# change this option, you must wipe the RabbitMQ database. In +# RabbitMQ 3.0, queue mirroring is no longer controlled by the +# x-ha-policy argument when declaring a queue. If you just +# want to make sure that all queues (except those with auto- +# generated names) are mirrored across all nodes, run: +# "rabbitmqctl set_policy HA '^(?!amq\.).*' '{"ha-mode": +# "all"}' " (boolean value) +# Deprecated group/name - [DEFAULT]/rabbit_ha_queues #rabbit_ha_queues=false +# Positive integer representing duration in seconds for queue +# TTL (x-expires). Queues which are unused for the duration of +# the TTL are automatically deleted. The parameter affects +# only reply and fanout queues. (integer value) +# Minimum value: 1 +#rabbit_transient_queues_ttl=1800 + +# Specifies the number of messages to prefetch. Setting to +# zero allows unlimited messages. (integer value) +#rabbit_qos_prefetch_count=0 + # Number of seconds after which the Rabbit broker is -# considered down if heartbeat's keep-alive fails (0 disables -# the heartbeat, >0 enables it. Enabling heartbeats requires -# kombu>=3.0.7 and amqp>=1.4.0). EXPERIMENTAL (integer value) -#heartbeat_timeout_threshold=0 +# considered down if heartbeat's keep-alive fails (0 disable +# the heartbeat). EXPERIMENTAL (integer value) +#heartbeat_timeout_threshold=60 # How often times during the heartbeat_timeout_threshold we # check the heartbeat. (integer value) @@ -1470,8 +1937,139 @@ # Deprecated, use rpc_backend=kombu+memory or rpc_backend=fake # (boolean value) +# Deprecated group/name - [DEFAULT]/fake_rabbit #fake_rabbit=false +# Maximum number of channels to allow (integer value) +#channel_max= + +# The maximum byte size for an AMQP frame (integer value) +#frame_max= + +# How often to send heartbeats for consumer's connections +# (integer value) +#heartbeat_interval=1 + +# Enable SSL (boolean value) +#ssl= + +# Arguments passed to ssl.wrap_socket (dict value) +#ssl_options= + +# Set socket timeout in seconds for connection's socket +# (floating point value) +#socket_timeout=0.25 + +# Set TCP_USER_TIMEOUT in seconds for connection's socket +# (floating point value) +#tcp_user_timeout=0.25 + +# Set delay for reconnection to some host which has connection +# error (floating point value) +#host_connection_reconnect_delay=0.25 + +# Maximum number of connections to keep queued. (integer +# value) +#pool_max_size=10 + +# Maximum number of connections to create above +# `pool_max_size`. (integer value) +#pool_max_overflow=0 + +# Default number of seconds to wait for a connections to +# available (integer value) +#pool_timeout=30 + +# Lifetime of a connection (since creation) in seconds or None +# for no recycling. Expired connections are closed on acquire. +# (integer value) +#pool_recycle=600 + +# Threshold at which inactive (since release) connections are +# considered stale in seconds or None for no staleness. Stale +# connections are closed on acquire. (integer value) +#pool_stale=60 + +# Persist notification messages. (boolean value) +#notification_persistence=false + +# Exchange name for for sending notifications (string value) +#default_notification_exchange=${control_exchange}_notification + +# Max number of not acknowledged message which RabbitMQ can +# send to notification listener. (integer value) +#notification_listener_prefetch_count=100 + +# Reconnecting retry count in case of connectivity problem +# during sending notification, -1 means infinite retry. +# (integer value) +#default_notification_retry_attempts=-1 + +# Reconnecting retry delay in case of connectivity problem +# during sending notification message (floating point value) +#notification_retry_delay=0.25 + +# Time to live for rpc queues without consumers in seconds. +# (integer value) +#rpc_queue_expiration=60 + +# Exchange name for sending RPC messages (string value) +#default_rpc_exchange=${control_exchange}_rpc + +# Exchange name for receiving RPC replies (string value) +#rpc_reply_exchange=${control_exchange}_rpc_reply + +# Max number of not acknowledged message which RabbitMQ can +# send to rpc listener. (integer value) +#rpc_listener_prefetch_count=100 + +# Max number of not acknowledged message which RabbitMQ can +# send to rpc reply listener. (integer value) +#rpc_reply_listener_prefetch_count=100 + +# Reconnecting retry count in case of connectivity problem +# during sending reply. -1 means infinite retry during +# rpc_timeout (integer value) +#rpc_reply_retry_attempts=-1 + +# Reconnecting retry delay in case of connectivity problem +# during sending reply. (floating point value) +#rpc_reply_retry_delay=0.25 + +# Reconnecting retry count in case of connectivity problem +# during sending RPC message, -1 means infinite retry. If +# actual retry attempts in not 0 the rpc request could be +# processed more then one time (integer value) +#default_rpc_retry_attempts=-1 + +# Reconnecting retry delay in case of connectivity problem +# during sending RPC message (floating point value) +#rpc_retry_delay=0.25 + + +[oslo_middleware] + +# +# Options defined in oslo.middleware +# + +# The maximum body size for each request, in bytes. (integer +# value) +# Deprecated group/name - [DEFAULT]/osapi_max_request_body_size +# Deprecated group/name - [DEFAULT]/max_request_body_size +#max_request_body_size=114688 + + +# +# Options defined in oslo.middleware +# + +# The HTTP Header that will be used to determine what the +# original request protocol scheme was, even if it was hidden +# by an SSL termination proxy. (string value) +# This option is deprecated and planned for removal in a future release. +#secure_proxy_ssl_header=X-Forwarded-Proto + [oslo_policy] @@ -1480,10 +2078,12 @@ # # The JSON file that defines policies. (string value) +# Deprecated group/name - [DEFAULT]/policy_file #policy_file=policy.json # Default rule. Enforced when a requested rule is not found. # (string value) +# Deprecated group/name - [DEFAULT]/policy_default_rule #policy_default_rule=default # Directories where policy configuration files are stored. @@ -1492,9 +2092,20 @@ # file defined by policy_file must exist for these directories # to be searched. Missing or empty directories are ignored. # (multi valued) +# Deprecated group/name - [DEFAULT]/policy_dirs #policy_dirs=policy.d +[oslo_versionedobjects] + +# +# Options defined in oslo.versionedobjects +# + +# Make exception message format errors fatal (boolean value) +#fatal_exception_format_errors=false + + [pxe] # @@ -1509,11 +2120,13 @@ # is created. (string value) #default_ephemeral_format=ext4 -# Directory where images are stored on disk. (string value) +# On the ironic-conductor node, directory where images are +# stored on disk. (string value) #images_path=/var/lib/ironic/images/ -# Directory where master instance images are stored on disk. -# (string value) +# On the ironic-conductor node, directory where master +# instance images are stored on disk. Setting to +# disables image caching. (string value) #instance_master_path=/var/lib/ironic/master_images # Maximum size (in MiB) of cache for master images, including @@ -1533,22 +2146,25 @@ # Options defined in ironic.drivers.modules.pxe # -# Template file for PXE configuration. (string value) +# On ironic-conductor node, template file for PXE +# configuration. (string value) #pxe_config_template=$pybasedir/drivers/modules/pxe_config.template -# Template file for PXE configuration for UEFI boot loader. -# (string value) +# On ironic-conductor node, template file for PXE +# configuration for UEFI boot loader. (string value) #uefi_pxe_config_template=$pybasedir/drivers/modules/elilo_efi_pxe_config.template -# IP address of Ironic compute node's tftp server. (string +# IP address of ironic-conductor node's TFTP server. (string # value) #tftp_server=$my_ip -# Ironic compute node's tftp root path. (string value) +# ironic-conductor node's TFTP root path. The ironic-conductor +# must have read/write access to this path. (string value) #tftp_root=/tftpboot -# Directory where master tftp images are stored on disk. -# (string value) +# On ironic-conductor node, directory where master TFTP images +# are stored on disk. Setting to disables image +# caching. (string value) #tftp_master_path=/tftpboot/master_images # Bootfile DHCP parameter. (string value) @@ -1557,19 +2173,22 @@ # Bootfile DHCP parameter for UEFI boot mode. (string value) #uefi_pxe_bootfile_name=elilo.efi -# Ironic compute node's HTTP server URL. Example: -# http://192.1.2.3:8080 (string value) -#http_url= - -# Ironic compute node's HTTP root path. (string value) -#http_root=/httpboot - # Enable iPXE boot. (boolean value) #ipxe_enabled=false -# The path to the main iPXE script file. (string value) +# On ironic-conductor node, the path to the main iPXE script +# file. (string value) #ipxe_boot_script=$pybasedir/drivers/modules/boot.ipxe +# Timeout value (in seconds) for downloading an image via +# iPXE. Defaults to 0 (no timeout) (integer value) +#ipxe_timeout=0 + +# The IP version that will be used for PXE booting. Defaults +# to 4. EXPERIMENTAL (string value) +# Possible values: 4, 6 +#ip_version=4 + [seamicro] @@ -1595,6 +2214,11 @@ # value) #power_timeout=10 +# Time (in seconds) to sleep between when rebooting (powering +# off and on again) (integer value) +# Minimum value: 0 +#reboot_delay=0 + [solaris_ipmi] @@ -1616,9 +2240,49 @@ # Options defined in ironic.drivers.modules.ssh # -# libvirt uri (string value) +# libvirt URI. (string value) #libvirt_uri=qemu:///system +# Number of attempts to try to get VM name used by the host +# that corresponds to a node's MAC address. (integer value) +#get_vm_name_attempts=3 + +# Number of seconds to wait between attempts to get VM name +# used by the host that corresponds to a node's MAC address. +# (integer value) +#get_vm_name_retry_interval=3 + + +[ssl] + +# +# Options defined in oslo.service.sslutils +# + +# CA certificate file to use to verify connecting clients. +# (string value) +# Deprecated group/name - [DEFAULT]/ssl_ca_file +#ca_file= + +# Certificate file to use when starting the server securely. +# (string value) +# Deprecated group/name - [DEFAULT]/ssl_cert_file +#cert_file= + +# Private key file to use when starting the server securely. +# (string value) +# Deprecated group/name - [DEFAULT]/ssl_key_file +#key_file= + +# SSL version to use (valid only if SSL enabled). Valid values +# are TLSv1 and SSLv23. SSLv2, SSLv3, TLSv1_1, and TLSv1_2 may +# be available on some distributions. (string value) +#version= + +# Sets the list of available ciphers. value should be a string +# in the OpenSSL cipher list format. (string value) +#ciphers= + [swift] @@ -1637,8 +2301,9 @@ # Options defined in ironic.drivers.modules.virtualbox # -# Port on which VirtualBox web service is listening. (integer +# Port on which VirtualBox web service is listening. (port # value) +# Possible values: 0-65535 #port=18083 diff -r 52081f923019 -r ea44e7e0ca98 components/openstack/ironic/ironic.license --- a/components/openstack/ironic/ironic.license Wed Sep 07 14:48:42 2016 -0700 +++ b/components/openstack/ironic/ironic.license Wed Sep 07 14:48:42 2016 -0700 @@ -1,5 +1,4 @@ -The following applies to all products licensed under the Apache 2.0 License: -LICENSE: +The following attribution text was taken from Component ironic Version 5.1.2 Apache License Version 2.0, January 2004 @@ -175,1080 +174,3 @@ defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. -============================================================ -ironic/conductor/utils.py -ironic/objects/node.py -ironic/objects/port.py -ironic/objects/chassis.py -ironic/api/controllers/v1/__init__.py -ironic/api/controllers/base.py -ironic/api/config.py -ironic/api/middleware/auth_token.py -ironic/api/middleware/__init__.py -ironic/api/app.wsgi -ironic/db/sqlalchemy/alembic/env.py -ironic/db/sqlalchemy/alembic/versions/2581ebaf0cb2_initial_migration.py -ironic/db/sqlalchemy/alembic/versions/31baaf680d2b_add_node_instance_info.py -ironic/db/sqlalchemy/alembic/versions/3cb628139ea4_nodes_add_console_enabled.py -ironic/db/sqlalchemy/alembic/versions/487deb87cc9d_add_conductor_affinity_and_online.py -ironic/db/sqlalchemy/alembic/versions/21b331f883ef_add_provision_updated_at.py -ironic/drivers/drac.py -ironic/drivers/modules/drac/resource_uris.py -ironic/drivers/modules/drac/power.py -ironic/drivers/modules/drac/common.py -ironic/drivers/modules/drac/client.py -ironic/drivers/modules/seamicro.py -ironic/tests/test_driver_factory.py -ironic/tests/objects/test_chassis.py -ironic/tests/objects/test_node.py -ironic/tests/objects/test_port.py -ironic/tests/db/sqlalchemy/test_types.py -ironic/tests/test_keystone.py -ironic/tests/drivers/test_seamicro.py -ironic/tests/drivers/drac/test_client.py -ironic/tests/drivers/drac/test_common.py -ironic/tests/drivers/drac/test_power.py -ironic/tests/conductor/test_conductor_utils.py -ironic/tests/api/v1/test_ports.py -ironic/tests/api/v1/test_chassis.py -ironic/tests/api/v1/test_nodes.py -ironic/tests/api/test_acl.py -ironic/tests/api/test_hooks.py -ironic/tests/api/utils.py -ironic/common/keystone.py -ironic/migrate_nova/migrate_db.py -ironic/common/context.py -ironic/openstack/common/periodic_task.py -etc/apache2/ironic - -# 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. - -============================================================ -ironic/common/exception.py -ironic/db/sqlalchemy/migration.py -ironic/db/migration.py -ironic/tests/base.py -ironic/tests/__init__.py -ironic/tests/conf_fixture.py - -# Copyright 2010 United States Government as represented by the -# Administrator of the National Aeronautics and Space Administration. -# 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. - -============================================================ -ironic/common/images.py -ironic/openstack/common/imageutils.py - -# Copyright 2010 United States Government as represented by the -# Administrator of the National Aeronautics and Space Administration. -# All Rights Reserved. -# Copyright (c) 2010 Citrix Systems, Inc. -# -# 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. - -============================================================ -ironic/common/safe_utils.py -ironic/openstack/common/loopingcall.py -ironic/openstack/common/service.py -ironic/openstack/common/jsonutils.py - -# Copyright 2010 United States Government as represented by the -# Administrator of the National Aeronautics and Space Administration. -# Copyright 2011 Justin Santa Barbara -# 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. - -============================================================ -ironic/common/utils.py -# Copyright 2010 United States Government as represented by the -# Administrator of the National Aeronautics and Space Administration. -# Copyright 2011 Justin Santa Barbara -# Copyright (c) 2012 NTT DOCOMO, 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. - -============================================================ -ironic/common/config.py -ironic/common/paths.py -ironic/netconf.py - -# Copyright 2010 United States Government as represented by the -# Administrator of the National Aeronautics and Space Administration. -# All Rights Reserved. -# Copyright 2012 Red Hat, Inc. -# -# 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. - -============================================================ -ironic/tests/matchers.py - -# Copyright 2010 United States Government as represented by the -# Administrator of the National Aeronautics and Space Administration. -# Copyright 2012 Hewlett-Packard Development Company, L.P. -# -# 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. -============================================================ -ironic/common/glance_service/base_image_service.py -ironic/common/image_service.py - -# Copyright 2010 OpenStack Foundation -# 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. - -============================================================ -ironic/openstack/common/apiclient/base.py - -# Copyright 2010 Jacob Kaplan-Moss -# Copyright 2011 OpenStack Foundation -# Copyright 2012 Grid Dynamics -# Copyright 2013 OpenStack Foundation -# 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. - -============================================================ -ironic/openstack/common/apiclient/exceptions.py - -# Copyright 2010 Jacob Kaplan-Moss -# Copyright 2011 Nebula, Inc. -# Copyright 2013 Alessio Ababilov -# Copyright 2013 OpenStack Foundation -# 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. - -============================================================ -ironic/tests/db/sqlalchemy/test_migrations.py - -# Copyright 2010-2011 OpenStack Foundation -# Copyright 2012-2013 IBM Corp. -# 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. - -============================================================ -ironic/version.py -ironic/common/policy.py -ironic/openstack/common/fileutils.py -ironic/openstack/common/lockutils.py -ironic/openstack/common/strutils.py -ironic/openstack/common/context.py -ironic/openstack/common/local.py -ironic/openstack/common/importutils.py -ironic/openstack/common/processutils.py -ironic/openstack/common/timeutils.py - -# Copyright 2011 OpenStack Foundation -# 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. - -============================================================ -ironic/tests/stubs.py - -# Copyright (c) 2011 Citrix Systems, Inc. -# -# 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. - -============================================================ -ironic/openstack/common/excutils.py - -# Copyright 2011 OpenStack Foundation. -# Copyright 2012, Red Hat, Inc. -# -# 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. - -============================================================ -ironic/openstack/common/log.py -# Copyright 2011 OpenStack Foundation. -# Copyright 2010 United States Government as represented by the -# Administrator of the National Aeronautics and Space Administration. -# 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. - -============================================================ -ironic/tests/test_utils.py - -# Copyright 2011 Justin Santa Barbara -# Copyright 2012 Hewlett-Packard Development Company, L.P. -# -# 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. - -============================================================ -ironic/openstack/common/network_utils.py -ironic/openstack/common/policy.py -ironic/tests/fake_policy.py - -# Copyright (c) 2012 OpenStack Foundation. -# 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. - -============================================================ -ironic/tests/policy_fixture.py - -# Copyright 2012 Hewlett-Packard Development Company, L.P. -# -# 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. - -============================================================ -ironic/openstack/common/threadgroup.py -ironic/openstack/common/cliutils.py - -# Copyright 2012 Red Hat, Inc. -# -# 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. - -============================================================ -ironic/openstack/common/uuidutils.py - -# Copyright (c) 2012 Intel Corporation. -# 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. - -============================================================ -ironic/common/service.py - -# Copyright © 2012 eNovance -# -# Author: Julien Danjou -# -# 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. - -============================================================ -ironic/api/controllers/root.py -ironic/api/acl.py -ironic/api/hooks.py -ironic/api/middleware/parsable_error.py -ironic/api/app.py - -# Copyright © 2012 New Dream Network, LLC (DreamHost) -# 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. -============================================================ -ironic/tests/db/base.py -ironic/tests/db/__init__.py -ironic/migrate_nova/nova_models.py -ironic/drivers/modules/deploy_utils.py - -# Copyright (c) 2012 NTT DOCOMO, INC. -# All Rights Reserved. -# flake8: noqa -# -# 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. - -============================================================ -ironic/openstack/common/eventlet_backdoor.py - -# Copyright (c) 2012 OpenStack Foundation. -# Administrator of the National Aeronautics and Space Administration. -# 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. - -============================================================ -ironic/openstack/common/config/generator.py - -# Copyright 2012 SINA Corporation -# Copyright 2014 Cisco Systems, 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. - -============================================================ -ironic/common/states.py -ironic/migrate_nova/nova_baremetal_states.py - -# Copyright (c) 2012 NTT DOCOMO, INC. -# Copyright 2010 OpenStack Foundation -# 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. - -============================================================ -ironic/nova/scheduler/ironic_host_manager.py - -# Copyright (c) 2012 NTT DOCOMO, INC. -# Copyright (c) 2011-2014 OpenStack Foundation -# Copyright 2014 Red Hat, 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. - -============================================================ -ironic/tests/drivers/test_deploy_utils.py - -# Copyright (c) 2012 NTT DOCOMO, INC. -# Copyright 2011 OpenStack Foundation -# Copyright 2011 Ilya Alekseyev -# -# 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. - -============================================================ -ironic/common/glance_service/service_utils.py - -# Copyright 2012 OpenStack Foundation -# 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. - -============================================================ -ironic/drivers/modules/ipmitool.py -ironic/tests/drivers/test_ipmitool.py - -# Copyright 2012 Hewlett-Packard Development Company, L.P. -# Copyright (c) 2012 NTT DOCOMO, INC. -# Copyright 2014 International Business Machines Corporation -# 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. - -============================================================ -ironic/openstack/common/gettextutils.py - -# Copyright 2012 Red Hat, Inc. -# Copyright 2013 IBM Corp. -# 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. - -============================================================ -ironic/openstack/common/systemd.py - -# Copyright 2012-2014 Red Hat, Inc. -# -# 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. - -============================================================ -ironic/conductor/task_manager.py -ironic/conductor/rpcapi.py -ironic/cmd/api.py -ironic/cmd/conductor.py -ironic/cmd/dbsync.py -ironic/cmd/__init__.py -ironic/objects/conductor.py -ironic/common/glance_service/service.py -ironic/common/glance_service/v2/image_service.py -ironic/common/glance_service/v1/image_service.py -ironic/common/hash_ring.py -ironic/drivers/fake.py -ironic/drivers/pxe.py -ironic/drivers/base.py -ironic/drivers/modules/iscsi_deploy.py -ironic/drivers/modules/pxe.py -ironic/drivers/modules/fake.py -ironic/drivers/modules/ssh.py -ironic/api/__init__.py -ironic/api/controllers/v1/node.py -ironic/db/api.py -ironic/db/sqlalchemy/models.py -ironic/db/sqlalchemy/api.py -ironic/nova/virt/ironic/__init__.py -ironic/tests/test_images.py -ironic/tests/objects/test_conductor.py -ironic/tests/db/utils.py -ironic/tests/db/test_chassis.py -ironic/tests/db/test_conductor.py -ironic/tests/db/test_nodes.py -ironic/tests/db/test_ports.py -ironic/tests/test_glance_service.py -ironic/tests/test_swift.py -ironic/tests/test_hash_ring.py -ironic/tests/drivers/test_iscsi_deploy.py -ironic/tests/drivers/test_pxe.py -ironic/tests/drivers/test_fake.py -ironic/tests/drivers/test_utils.py -ironic/tests/drivers/test_ssh.py -ironic/tests/conductor/test_utils.py -ironic/tests/conductor/test_task_manager.py -ironic/tests/conductor/utils.py -ironic/tests/conductor/test_rpcapi.py -ironic/tests/api/base.py -ironic/tests/api/test_base.py -ironic/tests/test_dbsync.py -ironic/openstack/common/__init__.py -setup.py - -# 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. - -============================================================ -ironic/objects/__init__.py -ironic/objects/base.py -ironic/objects/utils.py -ironic/drivers/modules/ipminative.py -ironic/tests/objects/test_objects.py -ironic/tests/drivers/test_ipminative.py - -# Copyright 2013 IBM Corp. -# -# 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. - -============================================================ -ironic/common/driver_factory.py -ironic/api/controllers/v1/collection.py -ironic/api/controllers/v1/state.py -ironic/api/controllers/v1/types.py -ironic/api/controllers/v1/utils.py -ironic/api/controllers/v1/chassis.py -ironic/api/controllers/v1/driver.py -ironic/api/controllers/link.py -ironic/tests/test_policy.py -ironic/tests/api/v1/test_types.py -ironic/tests/api/v1/test_drivers.py -ironic/tests/api/v1/test_utils.py -ironic/tests/api/test_root.py - -# Copyright 2013 Red Hat, 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. - -============================================================ -ironic/openstack/common/versionutils.py -ironic/openstack/common/apiclient/fake_client.py - -# Copyright (c) 2013 OpenStack Foundation -# 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. - -============================================================ -ironic/api/controllers/v1/port.py - -# Copyright 2013 UnitedStack 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. - -============================================================ -ironic/drivers/modules/snmp.py -ironic/tests/drivers/test_snmp.py - -# Copyright 2013,2014 Cray Inc -# -# Authors: David Hewson -# Stig Telfer -# Mark Goddard -# -# 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. - -============================================================ -ironic/conductor/manager.py -ironic/tests/conductor/test_manager.py - -# Copyright 2013 Hewlett-Packard Development Company, L.P. -# Copyright 2013 International Business Machines Corporation -# 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. - -============================================================ -ironic/openstack/common/apiclient/auth.py - -# Copyright 2013 OpenStack Foundation -# Copyright 2013 Spanish National Research Council. -# 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. - -============================================================ -tools/install_venv_common.py - -# Copyright 2013 OpenStack Foundation -# Copyright 2013 IBM Corp. -# -# 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. - -============================================================ -ironic/common/swift.py -ironic/tests/dhcp/test_neutron.py -ironic/dhcp/neutron.py - -# Copyright 2014 OpenStack Foundation -# 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. - -============================================================ -ironic/common/network.py -ironic/common/pxe_utils.py -ironic/common/dhcp_factory.py -ironic/drivers/modules/agent_client.py -ironic/drivers/modules/agent.py -ironic/drivers/agent.py -ironic/tests/dhcp/test_factory.py -ironic/tests/objects/utils.py -ironic/tests/test_network.py -ironic/tests/test_pxe_utils.py -ironic/tests/drivers/test_agent_client.py -ironic/tests/drivers/test_agent.py -ironic/dhcp/base.py -ironic/dhcp/none.py - -# Copyright 2014 Rackspace, Inc. -# -# 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. - -============================================================ -ironic/__init__.py -ironic/common/i18n.py -ironic/drivers/utils.py -ironic/drivers/modules/ilo/power.py -ironic/drivers/modules/ilo/deploy.py -ironic/drivers/modules/ilo/common.py -ironic/drivers/ilo.py -ironic/tests/drivers/third_party_driver_mocks.py -ironic/tests/drivers/__init__.py -ironic/tests/drivers/ilo/test_common.py -ironic/tests/drivers/ilo/test_deploy.py -ironic/tests/drivers/ilo/test_power.py - -# Copyright (c) 2014 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. - -============================================================ -ironic/common/disk_partitioner.py -ironic/common/boot_devices.py -ironic/common/rpc.py -ironic/drivers/modules/iboot.py -ironic/drivers/modules/drac/management.py -ironic/db/sqlalchemy/alembic/versions/3bea56f25597_add_unique_constraint_to_instance_uuid.py -ironic/tests/test_disk_partitioner.py -ironic/tests/drivers/test_image_cache.py -ironic/tests/drivers/test_iboot.py -ironic/tests/drivers/drac/utils.py -ironic/tests/drivers/drac/test_management.py - -# Copyright 2014 Red Hat, 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. - -============================================================ -ironic/tests/drivers/test_console_utils.py -ironic/drivers/modules/console_utils.py - -# Copyright 2014 International Business Machines Corporation -# 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. - -============================================================ -ironic/drivers/modules/image_cache.py -ironic/nova/virt/ironic/driver.py -ironic/nova/compute/manager.py - -# Copyright 2014 Red Hat, Inc. -# 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. - -============================================================ -ironic/locale/ironic-log-error.pot -ironic/locale/ironic-log-critical.pot -ironic/locale/ironic-log-info.pot -ironic/locale/ironic-log-warning.pot - -# Copyright (C) 2014 ORGANIZATION -# This file is distributed under the same license as the ironic project. -# FIRST AUTHOR , 2014. - -============================================================ -ironic/locale/fr/LC_MESSAGES/ironic-log-critical.po - -# Copyright (C) 2014 ORGANIZATION -# This file is distributed under the same license as the ironic project. -# -# Translators: -# Maxime COQUEREL , 2014 -# Andrew_Melim , 2014 - -============================================================ diff -r 52081f923019 -r ea44e7e0ca98 components/openstack/ironic/ironic.p5m --- a/components/openstack/ironic/ironic.p5m Wed Sep 07 14:48:42 2016 -0700 +++ b/components/openstack/ironic/ironic.p5m Wed Sep 07 14:48:42 2016 -0700 @@ -28,7 +28,7 @@ set name=pkg.summary value="OpenStack Ironic (Bare Metal Service)" set name=pkg.description \ value="OpenStack Ironic provides a service to provision bare metal machines instead of virtual machines. By default, it will use PXE and IPMI in concert to provision and turn on/off machines, but also supports vendor-specific plugins which may implement additional functionality." -set name=pkg.human-version value="Kilo $(COMPONENT_VERSION)" +set name=pkg.human-version value="Mitaka $(COMPONENT_VERSION)" set name=com.oracle.info.description \ value="Ironic, the OpenStack bare metal provisioning service" set name=com.oracle.info.tpno value=$(TPNO) @@ -42,7 +42,7 @@ set name=info.upstream-url value=$(COMPONENT_PROJECT_URL) set name=openstack.upgrade-id reboot-needed=true value=$(COMPONENT_BE_VERSION) set name=org.opensolaris.arc-caseid value=PSARC/2013/350 value=PSARC/2015/172 \ - value=PSARC/2015/535 + value=PSARC/2015/535 value=PSARC/2016/455 set name=org.opensolaris.consolidation value=$(CONSOLIDATION) # dir path=etc/ironic owner=ironic group=ironic mode=0700 @@ -97,6 +97,7 @@ file path=usr/lib/python$(PYVER)/vendor-packages/ironic/api/controllers/v1/state.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/api/controllers/v1/types.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/api/controllers/v1/utils.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/api/controllers/v1/versions.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/api/expose.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/api/hooks.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/api/middleware/__init__.py @@ -109,9 +110,10 @@ file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/__init__.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/boot_devices.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/config.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/config_generator/__init__.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/config_generator/generator.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/context.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/dhcp_factory.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/disk_partitioner.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/driver_factory.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/exception.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/fsm.py @@ -134,6 +136,7 @@ file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/paths.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/policy.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/pxe_utils.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/raid.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/rpc.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/safe_utils.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/service.py @@ -141,6 +144,7 @@ file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/swift.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/utils.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/conductor/__init__.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/conductor/base_manager.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/conductor/manager.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/conductor/rpcapi.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/conductor/task_manager.py @@ -163,9 +167,14 @@ file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/alembic/versions/3bea56f25597_add_unique_constraint_to_instance_uuid.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/alembic/versions/3cb628139ea4_nodes_add_console_enabled.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/alembic/versions/487deb87cc9d_add_conductor_affinity_and_online.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/alembic/versions/48d6c242bb9b_add_node_tags.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/alembic/versions/4f399b21ae71_add_node_clean_step.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/alembic/versions/516faf1bb9b1_resizing_column_nodes_driver.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/alembic/versions/5674c57409b9_replace_nostate_with_available.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/alembic/versions/5ea1b0d310e_added_port_group_table_and_altered_ports.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/alembic/versions/789acc877671_add_raid_config.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/alembic/versions/bb59b63f55a_add_node_driver_internal_info.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/alembic/versions/f6fdb920c182_set_pxe_enabled_true.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/api.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/migration.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/models.py @@ -179,6 +188,7 @@ file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/drac.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/fake.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/ilo.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/irmc.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/__init__.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/agent.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/agent_base_vendor.py @@ -191,78 +201,99 @@ file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/amt/resource_uris.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/amt/vendor.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/boot.ipxe +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/cimc/__init__.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/cimc/common.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/cimc/management.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/cimc/power.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/console_utils.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/deploy_utils.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/discoverd.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/drac/__init__.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/drac/client.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/drac/bios.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/drac/common.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/drac/job.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/drac/management.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/drac/power.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/drac/resource_uris.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/drac/vendor_passthru.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/elilo_efi_pxe_config.template file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/fake.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/iboot.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ilo/__init__.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ilo/boot.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ilo/common.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ilo/console.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ilo/deploy.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ilo/firmware_processor.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ilo/inspect.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ilo/management.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ilo/power.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ilo/vendor.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/image_cache.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/inspector.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ipminative.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ipmitool.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ipxe_config.template file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/irmc/__init__.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/irmc/boot.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/irmc/common.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/irmc/inspect.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/irmc/management.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/irmc/power.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/iscsi_deploy.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/master_grub_cfg.txt +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/msftocs/__init__.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/msftocs/common.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/msftocs/management.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/msftocs/msftocsclient.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/msftocs/power.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/oneview/__init__.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/oneview/common.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/oneview/management.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/oneview/power.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/oneview/vendor.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/pxe.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/pxe_config.template +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/pxe_grub_config.template file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/seamicro.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/snmp.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/solaris_ipmitool.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ssh.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ucs/__init__.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ucs/helper.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ucs/management.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ucs/power.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/virtualbox.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/wol.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/oneview.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/pxe.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/raid_config_schema.json file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/solaris.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/utils.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/netconf.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/nova/__init__.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/nova/compute/__init__.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/nova/compute/manager.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/nova/scheduler/__init__.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/nova/scheduler/ironic_host_manager.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/nova/virt/__init__.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/nova/virt/ironic/__init__.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/nova/virt/ironic/driver.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/objects/__init__.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/objects/base.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/objects/chassis.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/objects/conductor.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/objects/fields.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/objects/node.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/objects/port.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/objects/utils.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/__init__.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/__init__.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/_i18n.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/config/__init__.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/config/generator.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/eventlet_backdoor.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/fileutils.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/gettextutils.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/imageutils.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/importutils.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/local.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/log.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/loopingcall.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/periodic_task.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/service.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/systemd.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/threadgroup.py -file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/versionutils.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic/objects/portgroup.py file path=usr/lib/python$(PYVER)/vendor-packages/ironic/version.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic_tempest_plugin/README.rst +file path=usr/lib/python$(PYVER)/vendor-packages/ironic_tempest_plugin/__init__.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic_tempest_plugin/clients.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic_tempest_plugin/common/__init__.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic_tempest_plugin/common/waiters.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic_tempest_plugin/config.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic_tempest_plugin/plugin.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic_tempest_plugin/services/__init__.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic_tempest_plugin/services/baremetal/__init__.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic_tempest_plugin/services/baremetal/base.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic_tempest_plugin/services/baremetal/v1/__init__.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic_tempest_plugin/services/baremetal/v1/json/__init__.py +file path=usr/lib/python$(PYVER)/vendor-packages/ironic_tempest_plugin/services/baremetal/v1/json/baremetal_client.py dir path=var/lib/ironic owner=ironic group=ironic mode=0700 # group groupname=ironic gid=91 @@ -271,6 +302,10 @@ # license ironic.license license="Apache 2.0" +# To upgrade to the Mitaka version, the Kilo version of the package +# must be on the system +depend type=origin fmri=cloud/openstack/ironic@0.2015.1.2 root-image=true + # force a dependency on package delivering aimanifest(1M) depend type=require fmri=__TBD pkg.debug.depend.file=usr/bin/aimanifest @@ -295,21 +330,21 @@ # force a dependency on alembic; pkgdepend work is needed to flush this out. depend type=require fmri=library/python/alembic-$(PYV) -# force a dependency on babel; pkgdepend work is needed to flush this out. -depend type=require fmri=library/python/babel-$(PYV) +# force a dependency on automaton; pkgdepend work is needed to flush this out. +depend type=require fmri=library/python/automaton-$(PYV) # force a dependency on eventlet; pkgdepend work is needed to flush this out. depend type=require fmri=library/python/eventlet-$(PYV) +# force a dependency on futurist; pkgdepend work is needed to flush this out. +depend type=require fmri=library/python/futurist-$(PYV) + # force a dependency on glanceclient; pkgdepend work is needed to flush this # out. depend type=require fmri=library/python/glanceclient-$(PYV) -# force a dependency on greenlet; pkgdepend work is needed to flush this out. -depend type=require fmri=library/python/greenlet-$(PYV) - -# force a dependency on iso8601; pkgdepend work is needed to flush this out. -depend type=require fmri=library/python/iso8601-$(PYV) +# force a dependency on ironic-lib; pkgdepend work is needed to flush this out. +depend type=require fmri=library/python/ironic-lib-$(PYV) # force a dependency on jinja2; pkgdepend work is needed to flush this out. depend type=require fmri=library/python/jinja2-$(PYV) @@ -317,6 +352,9 @@ # force a dependency on jsonpatch; pkgdepend work is needed to flush this out. depend type=require fmri=library/python/jsonpatch-$(PYV) +# force a dependency on jsonschema; pkgdepend work is needed to flush this out. +depend type=require fmri=library/python/jsonschema-$(PYV) + # force a dependency on keystoneclient; pkgdepend work is needed to flush this # out. depend type=require fmri=library/python/keystoneclient-$(PYV) @@ -352,10 +390,17 @@ # force a dependency on oslo.i18n; pkgdepend work is needed to flush this out. depend type=require fmri=library/python/oslo.i18n-$(PYV) +# force a dependency on oslo.log; pkgdepend work is needed to flush this out. +depend type=require fmri=library/python/oslo.log-$(PYV) + # force a dependency on oslo.messaging; pkgdepend work is needed to flush this # out. depend type=require fmri=library/python/oslo.messaging-$(PYV) +# force a dependency on oslo.middleware; pkgdepend work is needed to flush this +# out. +depend type=require fmri=library/python/oslo.middleware-$(PYV) + # force a dependency on oslo.policy; pkgdepend work is needed to flush this # out. depend type=require fmri=library/python/oslo.policy-$(PYV) @@ -364,9 +409,17 @@ # this out. depend type=require fmri=library/python/oslo.serialization-$(PYV) +# force a dependency on oslo.service; pkgdepend work is needed to flush this +# out. +depend type=require fmri=library/python/oslo.service-$(PYV) + # force a dependency on oslo.utils; pkgdepend work is needed to flush this out. depend type=require fmri=library/python/oslo.utils-$(PYV) +# force a dependency on oslo.versionedobjects; pkgdepend work is needed to flush +# this out. +depend type=require fmri=library/python/oslo.versionedobjects-$(PYV) + # force a dependency on paramiko; pkgdepend work is needed to flush this out. depend type=require fmri=library/python/paramiko-$(PYV) @@ -376,9 +429,15 @@ # force a dependency on pecan; pkgdepend work is needed to flush this out. depend type=require fmri=library/python/pecan-$(PYV) +# force a dependency on psutil; pkgdepend work is needed to flush this out. +depend type=require fmri=library/python/psutil-$(PYV) + # force a dependency on pysendfile; pkgdepend work is needed to flush this out. depend type=require fmri=library/python/pysendfile-$(PYV) +# force a dependency on pytz; pkgdepend work is needed to flush this out. +depend type=require fmri=library/python/pytz-$(PYV) + # force a dependency on requests; pkgdepend work is needed to flush this out. depend type=require fmri=library/python/requests-$(PYV) @@ -388,9 +447,6 @@ # force a dependency on scp; pkgdepend work is needed to flush this out. depend type=require fmri=library/python/scp-$(PYV) -# force a dependency on setuptools; pkgdepend work is needed to flush this out. -depend type=require fmri=library/python/setuptools-$(PYV) - # force a dependency on six; pkgdepend work is needed to flush this out. depend type=require fmri=library/python/six-$(PYV) diff -r 52081f923019 -r ea44e7e0ca98 components/openstack/ironic/patches/01-requirements.patch --- a/components/openstack/ironic/patches/01-requirements.patch Wed Sep 07 14:48:42 2016 -0700 +++ b/components/openstack/ironic/patches/01-requirements.patch Wed Sep 07 14:48:42 2016 -0700 @@ -1,75 +1,22 @@ In-house patch to remove unnecessary dependencies from Ironic's requirements files. The specific reasons are as follows: -lxml Not applicable - -oslo.rootwrap Not applicable to Solaris +websockify Not applicable -posix-ipc Not applicable - -sqlalchemy-migrate Not applicable - -websockify Not applicable +oslo.rootwrap Not applicable to Solaris ---- ironic-2015.1.2/ironic.egg-info/requires.txt.~1~ 2015-10-13 10:59:16.000000000 -0700 -+++ ironic-2015.1.2/ironic.egg-info/requires.txt 2016-02-01 20:03:06.190153642 -0800 -@@ -2,10 +2,8 @@ pbr!=0.7,<1.0,>=0.6 - SQLAlchemy<=0.9.99,>=0.9.7 - alembic<0.8.1,>=0.7.2 - eventlet!=0.17.0,>=0.16.1 --lxml>=2.3 - WebOb>=1.2.3 - greenlet>=0.3.2 --sqlalchemy-migrate!=0.9.8,<0.10.0,>=0.9.5 - netaddr>=0.7.12 - paramiko>=1.13.0 - iso8601>=0.1.9 -@@ -15,12 +13,10 @@ python-keystoneclient<1.4.0,>=1.2.0 - python-swiftclient<2.5.0,>=2.2.0 - stevedore<1.4.0,>=1.3.0 # Apache-2.0 - pysendfile==2.0.0 --websockify<0.7,>=0.6.0 - oslo.concurrency<1.9.0,>=1.8.2 # Apache-2.0 - oslo.config<1.10.0,>=1.9.3 # Apache-2.0 - oslo.context<0.3.0,>=0.2.0 # Apache-2.0 - oslo.db<1.8.0,>=1.7.0 # Apache-2.0 --oslo.rootwrap<1.7.0,>=1.6.0 # Apache-2.0 - oslo.i18n<1.6.0,>=1.5.0 # Apache-2.0 - oslo.policy<0.4.0,>=0.3.1 # Apache-2.0 - oslo.serialization<1.5.0,>=1.4.0 # Apache-2.0 -@@ -34,4 +30,3 @@ Jinja2>=2.6 # BSD License3 clause - keystonemiddleware<1.6.0,>=1.5.0 - oslo.messaging<1.9.0,>=1.8.0 # Apache-2.0 - retrying!=1.3.0,>=1.2.3 # Apache-2.0 --posix-ipc ---- ironic-2015.1.2/requirements.txt.~1~ 2015-10-13 10:53:40.000000000 -0700 -+++ ironic-2015.1.2/requirements.txt 2016-02-01 20:03:53.251275842 -0800 -@@ -5,10 +5,8 @@ pbr!=0.7,<1.0,>=0.6 - SQLAlchemy<=0.9.99,>=0.9.7 - alembic<0.8.1,>=0.7.2 - eventlet!=0.17.0,>=0.16.1 --lxml>=2.3 - WebOb>=1.2.3 - greenlet>=0.3.2 --sqlalchemy-migrate!=0.9.8,<0.10.0,>=0.9.5 - netaddr>=0.7.12 - paramiko>=1.13.0 - iso8601>=0.1.9 -@@ -18,12 +16,10 @@ python-keystoneclient<1.4.0,>=1.2.0 - python-swiftclient<2.5.0,>=2.2.0 - stevedore<1.4.0,>=1.3.0 # Apache-2.0 - pysendfile==2.0.0 --websockify<0.7,>=0.6.0 - oslo.concurrency<1.9.0,>=1.8.2 # Apache-2.0 - oslo.config<1.10.0,>=1.9.3 # Apache-2.0 - oslo.context<0.3.0,>=0.2.0 # Apache-2.0 - oslo.db<1.8.0,>=1.7.0 # Apache-2.0 --oslo.rootwrap<1.7.0,>=1.6.0 # Apache-2.0 - oslo.i18n<1.6.0,>=1.5.0 # Apache-2.0 - oslo.policy<0.4.0,>=0.3.1 # Apache-2.0 - oslo.serialization<1.5.0,>=1.4.0 # Apache-2.0 -@@ -37,4 +33,3 @@ Jinja2>=2.6 # BSD License (3 clause) - keystonemiddleware<1.6.0,>=1.5.0 - oslo.messaging<1.9.0,>=1.8.0 # Apache-2.0 - retrying!=1.3.0,>=1.2.3 # Apache-2.0 --posix-ipc +--- ironic-5.1.0/requirements.txt.~1~ 2016-03-31 01:16:58.699655912 -0800 ++++ ironic-5.1.0/requirements.txt 2016-03-31 01:17:28.642059472 -0800 +@@ -18,12 +18,10 @@ python-swiftclient>=2.2.0 # Apache-2.0 + pytz>=2013.6 # MIT + stevedore>=1.5.0 # Apache-2.0 + pysendfile>=2.0.0 # MIT +-websockify>=0.6.1 # LGPLv3 + oslo.concurrency>=3.5.0 # Apache-2.0 + oslo.config>=3.7.0 # Apache-2.0 + oslo.context>=0.2.0 # Apache-2.0 + oslo.db>=4.1.0 # Apache-2.0 +-oslo.rootwrap>=2.0.0 # Apache-2.0 + oslo.i18n>=2.1.0 # Apache-2.0 + oslo.log>=1.14.0 # Apache-2.0 + oslo.middleware>=3.0.0 # Apache-2.0 diff -r 52081f923019 -r ea44e7e0ca98 components/openstack/ironic/patches/02-driver-entry.patch --- a/components/openstack/ironic/patches/02-driver-entry.patch Wed Sep 07 14:48:42 2016 -0700 +++ b/components/openstack/ironic/patches/02-driver-entry.patch Wed Sep 07 14:48:42 2016 -0700 @@ -1,12 +1,12 @@ Add solaris driver to list of available drivers ---- ORIGINAL/setup.cfg 2015-06-02 17:45:44.579172327 +0100 -+++ ironic-2015.1.0/setup.cfg 2015-06-02 17:48:37.552116117 +0100 -@@ -63,6 +63,7 @@ - pxe_snmp = ironic.drivers.pxe:PXEAndSNMPDriver - pxe_irmc = ironic.drivers.pxe:PXEAndIRMCDriver - pxe_amt = ironic.drivers.pxe:PXEAndAMTDriver +--- ironic-5.1.0/setup.cfg.~2~ 2016-03-31 01:17:58.933550758 -0800 ++++ ironic-5.1.0/setup.cfg 2016-03-31 01:19:08.019805547 -0800 +@@ -81,6 +81,7 @@ ironic.drivers = + pxe_wol = ironic.drivers.pxe:PXEAndWakeOnLanDriver + pxe_iscsi_cimc = ironic.drivers.pxe:PXEAndCIMCDriver + pxe_agent_cimc = ironic.drivers.agent:AgentAndCIMCDriver + solaris = ironic.drivers.solaris:SolarisAndIPMIToolDriver ironic.database.migration_backend = sqlalchemy = ironic.db.sqlalchemy.migration - + tempest.test_plugins = diff -r 52081f923019 -r ea44e7e0ca98 components/openstack/ironic/patches/03-boot-device.patch --- a/components/openstack/ironic/patches/03-boot-device.patch Wed Sep 07 14:48:42 2016 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -Ironic is very "Linux" centric, so for all nodes regardless of architecture it -reports the same list of supported boot devices. - -This is not correct for SPARC, e.g. PXE is not supported. - -This patch simply passes the task into the driver implemented method for -getting the boot device so that architecture specific information can be -returned. - -Upstream bug logged against trunk: - https://bugs.launchpad.net/ironic/+bug/1391598 - ---- ORIGINAL/ironic/conductor/manager.py 2015-05-05 22:41:35.764613395 +0100 -+++ ironic-2015.1.0/ironic/conductor/manager.py 2015-05-05 22:47:23.046291559 +0100 -@@ -1615,7 +1615,7 @@ - if not getattr(task.driver, 'management', None): - raise exception.UnsupportedDriverExtension( - driver=task.node.driver, extension='management') -- return task.driver.management.get_supported_boot_devices() -+ return task.driver.management.get_supported_boot_devices(task) - - @messaging.expected_exceptions(exception.NoFreeConductorWorker, - exception.NodeLocked, ---- ORIGINAL/ironic/drivers/base.py 2015-05-05 22:41:35.780975517 +0100 -+++ ironic-2015.1.0/ironic/drivers/base.py 2015-05-05 22:48:01.342155003 +0100 -@@ -629,9 +629,10 @@ - """ - - @abc.abstractmethod -- def get_supported_boot_devices(self): -+ def get_supported_boot_devices(self, task=None): - """Get a list of the supported boot devices. - -+ :param task: a task from TaskManager. - :returns: A list with the supported boot devices defined - in :mod:`ironic.common.boot_devices`. - """ diff -r 52081f923019 -r ea44e7e0ca98 components/openstack/ironic/patches/04-generate_sample.patch --- a/components/openstack/ironic/patches/04-generate_sample.patch Wed Sep 07 14:48:42 2016 -0700 +++ b/components/openstack/ironic/patches/04-generate_sample.patch Wed Sep 07 14:48:42 2016 -0700 @@ -1,8 +1,8 @@ In-house patch to update the generate_sample script and related data files for use with Solaris. ---- ironic-2015.1.2/tools/config/generate_sample.sh.orig 2015-10-13 10:53:40.000000000 -0700 -+++ ironic-2015.1.2/tools/config/generate_sample.sh 2016-02-01 21:01:28.356560160 -0800 +--- ironic-5.1.2/tools/config/generate_sample.sh.~1~ 2016-06-21 12:57:28.000000000 -0700 ++++ ironic-5.1.2/tools/config/generate_sample.sh 2016-07-19 14:17:02.813964380 -0700 @@ -1,5 +1,7 @@ #!/usr/bin/env bash @@ -11,3 +11,22 @@ # Generate sample configuration for your project. # # Aside from the command line flags, it also respects a config file which +--- ironic-5.1.2/tools/config/oslo.config.generator.rc.~1~ 2016-06-21 12:57:28.000000000 -0700 ++++ ironic-5.1.2/tools/config/oslo.config.generator.rc 2016-07-19 14:27:38.284860215 -0700 +@@ -1,2 +1,15 @@ +-export IRONIC_CONFIG_GENERATOR_EXTRA_LIBRARIES='oslo.db oslo.messaging oslo.middleware.cors keystonemiddleware.auth_token oslo.concurrency oslo.policy oslo.log oslo.service.service oslo.service.periodic_task oslo.service.sslutils' ++export IRONIC_CONFIG_GENERATOR_EXTRA_LIBRARIES=' ++ oslo.db ++ oslo.messaging ++ oslo.middleware ++ keystonemiddleware.auth_token ++ oslo.concurrency ++ oslo.policy ++ oslo.log ++ oslo.service.service ++ oslo.service.periodic_task ++ oslo.service.sslutils ++ oslo.service.wsgi ++ oslo.versionedobjects ++' + export IRONIC_CONFIG_GENERATOR_EXTRA_MODULES='ironic_lib.disk_utils ironic_lib.disk_partitioner ironic_lib.utils' diff -r 52081f923019 -r ea44e7e0ca98 components/openstack/ironic/patches/05-mysql_cluster_support.patch --- a/components/openstack/ironic/patches/05-mysql_cluster_support.patch Wed Sep 07 14:48:42 2016 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,111 +0,0 @@ -This patchset is for bug: - -22726240 - Ironic needs to support MySQL Cluster - -This fixes the following aspects of Ironic: -1. Implementation of an oslo.db configuration parameter to specify the MySQL - storage engine (mysql_storage_engine). -2. Replacement of hardcoded SQL statements that set the engine to "InnoDB" - to the above configuration value. -3. Logic to handle SQL differences between MySQL InnoDB and MySQL Cluster (NDB). - This includes column lengths, constraints, foreign keys, and indexes. -4. Changes the conductor table column "online" to "online_status" to make it - more portable. "online" is a reserved word in MySQL and other databases. - -This has not been committed upstream, but has been filed in launchpad: - -https://bugs.launchpad.net/ironic/+bug/1564110 - - ---- ironic-2015.1.2/ironic/db/sqlalchemy/models.py.orig 2016-07-29 12:25:49.797916170 -0600 -+++ ironic-2015.1.2/ironic/db/sqlalchemy/models.py 2016-07-28 14:06:28.682668208 -0600 -@@ -49,8 +49,12 @@ db_options.set_defaults(cfg.CONF, _DEFAU - def table_args(): - engine_name = urlparse.urlparse(cfg.CONF.database.connection).scheme - if engine_name == 'mysql': -- return {'mysql_engine': cfg.CONF.database.mysql_engine, -- 'mysql_charset': "utf8"} -+ if cfg.CONF.database.mysql_storage_engine == "NDBCLUSTER": -+ return {'mysql_engine': cfg.CONF.database.mysql_storage_engine, -+ 'mysql_charset': "utf8"} -+ else: -+ return {'mysql_engine': cfg.CONF.database.mysql_engine, -+ 'mysql_charset': "utf8"} - return None - - -@@ -135,7 +139,7 @@ class Conductor(Base): - id = Column(Integer, primary_key=True) - hostname = Column(String(255), nullable=False) - drivers = Column(JSONEncodedList) -- online = Column(Boolean, default=True) -+ online = Column('online', Boolean, default=True, quote=True) - - - class Node(Base): ---- ironic-2015.1.2/ironic/db/sqlalchemy/alembic/versions/2581ebaf0cb2_initial_migration.py.orig 2016-07-29 12:25:57.319572657 -0600 -+++ ironic-2015.1.2/ironic/db/sqlalchemy/alembic/versions/2581ebaf0cb2_initial_migration.py 2016-07-29 12:27:49.354646151 -0600 -@@ -24,8 +24,10 @@ revision = '2581ebaf0cb2' - down_revision = None - - from alembic import op -+from oslo_config import cfg - import sqlalchemy as sa - -+CONF = cfg.CONF - - def upgrade(): - # commands auto generated by Alembic - please adjust! -@@ -38,7 +40,7 @@ def upgrade(): - sa.Column('drivers', sa.Text(), nullable=True), - sa.PrimaryKeyConstraint('id'), - sa.UniqueConstraint('hostname', name='uniq_conductors0hostname'), -- mysql_ENGINE='InnoDB', -+ mysql_ENGINE=CONF.database.mysql_storage_engine, - mysql_DEFAULT_CHARSET='UTF8' - ) - op.create_table( -@@ -51,7 +53,7 @@ def upgrade(): - sa.Column('description', sa.String(length=255), nullable=True), - sa.PrimaryKeyConstraint('id'), - sa.UniqueConstraint('uuid', name='uniq_chassis0uuid'), -- mysql_ENGINE='InnoDB', -+ mysql_ENGINE=CONF.database.mysql_storage_engine, - mysql_DEFAULT_CHARSET='UTF8' - ) - op.create_table( -@@ -77,7 +79,7 @@ def upgrade(): - sa.ForeignKeyConstraint(['chassis_id'], ['chassis.id'], ), - sa.PrimaryKeyConstraint('id'), - sa.UniqueConstraint('uuid', name='uniq_nodes0uuid'), -- mysql_ENGINE='InnoDB', -+ mysql_ENGINE=CONF.database.mysql_storage_engine, - mysql_DEFAULT_CHARSET='UTF8' - ) - op.create_index('node_instance_uuid', 'nodes', ['instance_uuid'], -@@ -95,7 +97,7 @@ def upgrade(): - sa.PrimaryKeyConstraint('id'), - sa.UniqueConstraint('address', name='uniq_ports0address'), - sa.UniqueConstraint('uuid', name='uniq_ports0uuid'), -- mysql_ENGINE='InnoDB', -+ mysql_ENGINE=CONF.database.mysql_storage_engine, - mysql_DEFAULT_CHARSET='UTF8' - ) - # end Alembic commands ---- ironic-2015.1.2/ironic/db/sqlalchemy/alembic/versions/487deb87cc9d_add_conductor_affinity_and_online.py.orig 2016-07-29 12:26:04.346647881 -0600 -+++ ironic-2015.1.2/ironic/db/sqlalchemy/alembic/versions/487deb87cc9d_add_conductor_affinity_and_online.py 2016-07-28 14:06:28.683182607 -0600 -@@ -29,7 +29,7 @@ import sqlalchemy as sa - def upgrade(): - op.add_column( - 'conductors', -- sa.Column('online', sa.Boolean(), default=True)) -+ sa.Column('online', sa.Boolean(), default=True, quote=True)) - op.add_column( - 'nodes', - sa.Column('conductor_affinity', sa.Integer(), -@@ -42,4 +42,4 @@ def downgrade(): - op.drop_constraint('nodes_conductor_affinity_fk', 'nodes', - type_='foreignkey') - op.drop_column('nodes', 'conductor_affinity') -- op.drop_column('conductors', 'online') -+ op.drop_column('conductors', 'online', quote=True)