24465850 Update Nova for the Mitaka release
22456289 nova interface-attach reports an error; adds unusable entry to instance anyway
--- a/components/openstack/nova/Makefile Wed Sep 07 14:48:42 2016 -0700
+++ b/components/openstack/nova/Makefile Wed Sep 07 14:48:42 2016 -0700
@@ -26,20 +26,20 @@
include ../../../make-rules/shared-macros.mk
COMPONENT_NAME= nova
-COMPONENT_CODENAME= kilo
-COMPONENT_VERSION= 2015.1.2
-COMPONENT_BE_VERSION= 2015.1
+COMPONENT_CODENAME= mitaka
+COMPONENT_VERSION= 13.1.0
+COMPONENT_BE_VERSION= 2016.1
COMPONENT_SRC= $(COMPONENT_NAME)-$(COMPONENT_VERSION)
COMPONENT_ARCHIVE= $(COMPONENT_SRC).tar.gz
COMPONENT_ARCHIVE_HASH= \
- sha256:8ea47c076367dec47d7bea89210f260da64171be5adf559ced8514d5fdb6c453
-COMPONENT_ARCHIVE_URL= http://launchpad.net/$(COMPONENT_NAME)/$(COMPONENT_CODENAME)/$(COMPONENT_VERSION)/+download/$(COMPONENT_ARCHIVE)
+ sha256:2c44b0f015f48348d768abff0e0fc90c6f8faf46743cae94736d77704f249368
+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/nova
-IPS_COMPONENT_VERSION= 0.$(COMPONENT_VERSION)
-TPNO= 25792
+TPNO= 30363
PKG_VARS += COMPONENT_BE_VERSION
@@ -63,33 +63,32 @@
# the proto directory for pkgdepend(1) to find.
#
COMPONENT_POST_INSTALL_ACTION += \
- ($(CP) \
- /dev/null $(PROTO_DIR)$(PYTHON_LIB)/nova/virt/libvirt/__init__.py; \
- $(MKDIR) $(PROTO_DIR)/lib/svc/manifest/application/openstack; \
- $(CP) \
- files/nova-api-ec2.xml \
- files/nova-api-metadata.xml \
- files/nova-api-osapi-compute.xml \
- files/nova-cert.xml \
- files/nova-compute.xml \
- files/nova-conductor.xml \
- files/nova-consoleauth.xml \
- files/nova-novncproxy.xml \
- files/nova-objectstore.xml \
- files/nova-scheduler.xml \
- files/nova-upgrade.xml \
- files/zone-vnc-console.xml \
- $(PROTO_DIR)/lib/svc/manifest/application/openstack; \
- $(CP) \
- files/network/solaris_net.py \
- $(PROTO_DIR)$(PYTHON_LIB)/nova/network; \
- $(MKDIR) $(PROTO_DIR)$(PYTHON_LIB)/nova/virt/solariszones; \
- $(CP) \
- files/solariszones/__init__.py \
- files/solariszones/driver.py \
- files/solariszones/sysconfig.py \
- $(PROTO_DIR)$(PYTHON_LIB)/nova/virt/solariszones); \
- $(PYTHON) -m compileall $(PROTO_DIR)/$(PYTHON_VENDOR_PACKAGES)
+ ($(CP) /dev/null $(PROTO_DIR)$(PYTHON_LIB)/nova/virt/libvirt/__init__.py; \
+ $(MKDIR) $(PROTO_DIR)/lib/svc/manifest/application/openstack; \
+ $(CP) \
+ files/nova-api-ec2.xml \
+ files/nova-api-metadata.xml \
+ files/nova-api-osapi-compute.xml \
+ files/nova-cert.xml \
+ files/nova-compute.xml \
+ files/nova-conductor.xml \
+ files/nova-consoleauth.xml \
+ files/nova-novncproxy.xml \
+ files/nova-objectstore.xml \
+ files/nova-scheduler.xml \
+ files/nova-upgrade.xml \
+ files/zone-vnc-console.xml \
+ $(PROTO_DIR)/lib/svc/manifest/application/openstack; \
+ $(CP) \
+ files/network/solaris_net.py \
+ $(PROTO_DIR)$(PYTHON_LIB)/nova/network; \
+ $(MKDIR) $(PROTO_DIR)$(PYTHON_LIB)/nova/virt/solariszones; \
+ $(CP) \
+ files/solariszones/__init__.py \
+ files/solariszones/driver.py \
+ files/solariszones/sysconfig.py \
+ $(PROTO_DIR)$(PYTHON_LIB)/nova/virt/solariszones); \
+ $(PYTHON) -m compileall $(PROTO_DIR)/$(PYTHON_VENDOR_PACKAGES)
# common targets
build: $(BUILD_NO_ARCH)
@@ -98,7 +97,7 @@
test: $(NO_TESTS)
-system-test: $(NO_TESTS)
+system-test: $(NO_TESTS)
REQUIRED_PACKAGES += cloud/openstack/openstack-common
@@ -106,11 +105,12 @@
REQUIRED_PACKAGES += library/python/eventlet-27
REQUIRED_PACKAGES += library/python/iniparse-27
REQUIRED_PACKAGES += library/python/oslo.config-27
+REQUIRED_PACKAGES += library/python/oslo.log-27
+REQUIRED_PACKAGES += library/python/oslo.messaging-27
REQUIRED_PACKAGES += library/python/oslo.serialization-27
REQUIRED_PACKAGES += library/python/sqlalchemy-27
REQUIRED_PACKAGES += library/python/sqlalchemy-migrate-27
REQUIRED_PACKAGES += library/python/webob-27
-REQUIRED_PACKAGES += service/network/evs
REQUIRED_PACKAGES += system/core-os
REQUIRED_PACKAGES += system/file-system/zfs
REQUIRED_PACKAGES += system/library/storage/suri
--- a/components/openstack/nova/files/nova-api Wed Sep 07 14:48:42 2016 -0700
+++ b/components/openstack/nova/files/nova-api Wed Sep 07 14:48:42 2016 -0700
@@ -1,6 +1,6 @@
#!/usr/bin/python2.7
-# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2016, Oracle and/or its affiliates. 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
@@ -17,14 +17,12 @@
import os
import sys
+from oslo_config import cfg
import smf_include
-from oslo.config import cfg
-
# name to script mapping for nova API
MAPPING = {
- "ec2": "/usr/lib/nova/nova-api-ec2",
"metadata": "/usr/lib/nova/nova-api-metadata",
"osapi_compute": "/usr/lib/nova/nova-api-os-compute"
}
--- a/components/openstack/nova/files/nova-api-ec2.xml Wed Sep 07 14:48:42 2016 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-<?xml version="1.0" ?>
-<!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
-<!--
- Copyright (c) 2013, 2015, Oracle and/or its affiliates. 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.
-
- NOTE: This service manifest is not editable; its contents will
- be overwritten by package or patch operations, including
- operating system upgrade. Make customizations in a different
- file.
--->
-<service_bundle type="manifest" name="nova-api">
-
- <service version="1" type="service"
- name="application/openstack/nova/nova-api-ec2">
-
- <dependency name='multiuser' grouping='require_all' restart_on='error'
- type='service'>
- <service_fmri value='svc:/milestone/multi-user:default' />
- </dependency>
-
- <dependency name='upgrade' grouping='require_all' restart_on='none'
- type='service'>
- <service_fmri
- value='svc:/application/openstack/nova/nova-upgrade' />
- </dependency>
-
- <dependency name='ntp' grouping='optional_all' restart_on='none'
- type='service'>
- <service_fmri value='svc:/network/ntp'/>
- </dependency>
-
- <dependency name='rabbitmq' grouping='optional_all' restart_on='none'
- type='service'>
- <service_fmri value='svc:/application/rabbitmq'/>
- </dependency>
-
- <logfile_attributes permissions='600'/>
-
- <exec_method timeout_seconds="60" type="method" name="start"
- exec="/lib/svc/method/nova-api %m ec2">
- <method_context>
- <method_credential user='nova' group='nova' />
- </method_context>
- </exec_method>
- <exec_method timeout_seconds="60" type="method" name="stop"
- exec=":kill"/>
-
- <instance name='default' enabled='false'>
- <!-- to start/stop/refresh the service -->
- <property_group name='general' type='framework'>
- <propval name='action_authorization' type='astring'
- value='solaris.smf.manage.nova' />
- <propval name='value_authorization' type='astring'
- value='solaris.smf.value.nova' />
- </property_group>
- </instance>
-
- <template>
- <common_name>
- <loctext xml:lang="C">
- OpenStack Nova EC2 API Service
- </loctext>
- </common_name>
- <description>
- <loctext xml:lang="C">
- nova-api-ec2 is a service that supports the Nova EC2 API.
- </loctext>
- </description>
- </template>
- </service>
-</service_bundle>
--- a/components/openstack/nova/files/nova-compute Wed Sep 07 14:48:42 2016 -0700
+++ b/components/openstack/nova/files/nova-compute Wed Sep 07 14:48:42 2016 -0700
@@ -56,7 +56,7 @@
# retrieve the suspend path or just get the default
suspend_default_path = '/var/share/zones/SYSsuspend'
try:
- suspend_path = parser.get('DEFAULT', 'zones_suspend_path')
+ suspend_path = parser.get('solariszones', 'zones_suspend_path')
except ConfigParser.NoOptionError:
suspend_path = suspend_default_path
@@ -73,7 +73,7 @@
# retrieve the image cache path or just get the default
imagecache_default_path = '/var/share/nova/images'
try:
- imagecache_path = parser.get('DEFAULT', 'glancecache_dirname')
+ imagecache_path = parser.get('solariszones', 'glancecache_dirname')
except ConfigParser.NoOptionError:
imagecache_path = imagecache_default_path
--- a/components/openstack/nova/files/nova-compute.xml Wed Sep 07 14:48:42 2016 -0700
+++ b/components/openstack/nova/files/nova-compute.xml Wed Sep 07 14:48:42 2016 -0700
@@ -1,7 +1,7 @@
<?xml version="1.0" ?>
<!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
<!--
- Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2013, 2016, Oracle and/or its affiliates. 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
@@ -36,13 +36,8 @@
value='svc:/application/openstack/nova/nova-upgrade' />
</dependency>
- <dependency name='evs' grouping='require_all' restart_on='error'
- type='service'>
- <service_fmri value='svc:/network/evs:default' />
- </dependency>
-
- <dependency name='neutron-ovs-agent' grouping='optional_all' restart_on='none'
- type='service'>
+ <dependency name='neutron-ovs-agent' grouping='optional_all'
+ restart_on='none' type='service'>
<service_fmri value='svc:/application/openstack/neutron/neutron-openvswitch-agent:default' />
</dependency>
--- a/components/openstack/nova/files/nova-conductor Wed Sep 07 14:48:42 2016 -0700
+++ b/components/openstack/nova/files/nova-conductor Wed Sep 07 14:48:42 2016 -0700
@@ -15,12 +15,11 @@
# under the License.
import os
+from subprocess import CalledProcessError, check_call
import sys
import smf_include
-from subprocess import CalledProcessError, check_call
-
def start():
# sync the database to make sure it's ready
@@ -31,6 +30,14 @@
print "Unable to create database for Nova: %s" % err
sys.exit(smf_include.SMF_EXIT_ERR_CONFIG)
+ # sync the database to make sure it's ready
+ cmd = ["/usr/bin/nova-manage", "api_db", "sync"]
+ try:
+ check_call(cmd)
+ except CalledProcessError as err:
+ print "Unable to create nova_api database for Nova: %s" % err
+ sys.exit(smf_include.SMF_EXIT_ERR_CONFIG)
+
smf_include.smf_subprocess("/usr/lib/nova/nova-conductor")
if __name__ == "__main__":
--- a/components/openstack/nova/files/nova-objectstore Wed Sep 07 14:48:42 2016 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-#!/usr/bin/python2.7
-
-# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-import os
-
-import smf_include
-
-
-def start():
- smf_include.smf_subprocess("/usr/lib/nova/nova-objectstore")
-
-if __name__ == "__main__":
- os.putenv("LC_ALL", "C")
- smf_include.smf_main()
--- a/components/openstack/nova/files/nova-objectstore.xml Wed Sep 07 14:48:42 2016 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-<?xml version="1.0" ?>
-<!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
-<!--
- Copyright (c) 2014, 2015, Oracle and/or its affiliates. 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.
-
- NOTE: This service manifest is not editable; its contents will
- be overwritten by package or patch operations, including
- operating system upgrade. Make customizations in a different
- file.
--->
-<service_bundle type="manifest" name="nova-objectstore">
-
- <service version="1" type="service"
- name="application/openstack/nova/nova-objectstore">
-
- <dependency name='multiuser' grouping='require_all' restart_on='error'
- type='service'>
- <service_fmri value='svc:/milestone/multi-user:default' />
- </dependency>
-
- <dependency name='upgrade' grouping='require_all' restart_on='none'
- type='service'>
- <service_fmri
- value='svc:/application/openstack/nova/nova-upgrade' />
- </dependency>
-
- <dependency name='ntp' grouping='optional_all' restart_on='none'
- type='service'>
- <service_fmri value='svc:/network/ntp'/>
- </dependency>
-
- <dependency name='rabbitmq' grouping='optional_all' restart_on='none'
- type='service'>
- <service_fmri value='svc:/application/rabbitmq'/>
- </dependency>
-
- <logfile_attributes permissions='600'/>
-
- <exec_method timeout_seconds="60" type="method" name="start"
- exec="/lib/svc/method/nova-objectstore %m">
- <method_context>
- <method_credential user='nova' group='nova' />
- </method_context>
- </exec_method>
- <exec_method timeout_seconds="60" type="method" name="stop"
- exec=":kill"/>
-
- <instance name='default' enabled='false'>
- <!-- to start/stop/refresh the service -->
- <property_group name='general' type='framework'>
- <propval name='action_authorization' type='astring'
- value='solaris.smf.manage.nova' />
- <propval name='value_authorization' type='astring'
- value='solaris.smf.value.nova' />
- </property_group>
- </instance>
-
- <template>
- <common_name>
- <loctext xml:lang="C">
- OpenStack Nova Object Store Service
- </loctext>
- </common_name>
- <description>
- <loctext xml:lang="C">
- The nova-objectstore service provides an S3 interface for registering
- images onto the Glance image management service.
- </loctext>
- </description>
- </template>
- </service>
-</service_bundle>
--- a/components/openstack/nova/files/nova-upgrade Wed Sep 07 14:48:42 2016 -0700
+++ b/components/openstack/nova/files/nova-upgrade Wed Sep 07 14:48:42 2016 -0700
@@ -28,88 +28,91 @@
move_conf
NOVA_CONF_MAPPINGS = {
- # Deprecated group/name for Kilo
+ # Deprecated group/name for Liberty
('DEFAULT', 'network_device_mtu'): (None, None),
- ('DEFAULT', 'log-format'): (None, None),
- ('DEFAULT', 'use-syslog'): (None, None),
- ('cinder', 'http_timeout'): ('cinder', 'timeout'),
+ ('DEFAULT', 'vnc_keymap'): ('vnc', 'keymap'),
+ ('DEFAULT', 'vnc_enabled'): ('vnc', 'enabled'),
+ ('DEFAULT', 'xvpvncproxy_base_url'): ('vnc', 'xvpvncproxy_base_url'),
('ironic', 'client_log_level'): (None, None),
- ('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_heartbeat'):
- ('oslo_messaging_qpid', 'qpid_heartbeat'),
- ('DEFAULT', 'qpid_protocol'):
- ('oslo_messaging_qpid', 'qpid_protocol'),
- ('DEFAULT', 'qpid_tcp_nodelay'):
- ('oslo_messaging_qpid', 'qpid_tcp_nodelay'),
- ('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_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'),
- ('DEFAULT', 'osapi_max_request_body_size'):
- ('oslo_middleware', 'max_request_body_size'),
- ('neutron', 'ca_certificates_file'): ('neutron', 'cafile'),
+ ('neutron', 'admin_username'): ('neutron', 'username'),
+ ('DEFAULT', 'ssl_ca_file'): ('ssl', 'ca_file'),
+ ('osapi_v21', 'enabled'): (None, None),
+ ('DEFAULT', 'novncproxy_base_url'): ('vnc', 'novncproxy_base_url'),
('neutron', 'admin_user_id'): (None, None),
('neutron', 'admin_tenant_id'): (None, None),
+ ('DEFAULT', 'ssl_cert_file'): ('ssl', 'cert_file'),
('DEFAULT', 'log_format'): (None, None),
- ('cinder', 'api_insecure'): ('cinder', 'insecure'),
+ ('DEFAULT', 'vncserver_proxyclient_address'):
+ ('vnc', 'vncserver_proxyclient_address'),
+ ('osapi_v21', 'extensions_blacklist'): (None, None),
+ ('workarounds', 'destroy_after_evacuate'): (None, None),
+ ('neutron', 'admin_tenant_name'): ('neutron', 'tenant_name'),
+ ('DEFAULT', 'osapi_compute_ext_list'): (None, None),
+ ('DEFAULT', 'rpc_thread_pool_size'):
+ ('DEFAULT', 'executor_thread_pool_size'),
+ ('DEFAULT', 'vncserver_listen'): ('vnc', 'vncserver_listen'),
+ ('neutron', 'admin_password'): ('neutron', 'password'),
+ ('DEFAULT', 'ssl_key_file'): ('ssl', 'key_file'),
+ ('neutron', 'admin_auth_url'): ('neutron', 'auth_url'),
+ # Deprecated group/name for Mitaka
+ ('DEFAULT', 'cert_manager'): (None, None),
+ ('DEFAULT', 'compute_available_monitors'): (None, None),
+ ('DEFAULT', 'compute_manager'): (None, None),
+ ('DEFAULT', 'compute_resources'): (None, None),
+ ('DEFAULT', 'compute_stats_class'): (None, None),
+ ('DEFAULT', 'console_manager'): (None, None),
+ ('DEFAULT', 'consoleauth_manager'): (None, None),
+ ('DEFAULT', 'db_driver'): (None, None),
+ ('DEFAULT', 'memcached_servers'): (None, None),
+ ('DEFAULT', 'metadata_manager'): (None, None),
+ ('DEFAULT', 'network_api_class'): (None, None),
+ ('DEFAULT', 'network_device_mtu'): (None, None),
+ ('DEFAULT', 'osapi_compute_ext_list'): (None, None),
+ ('DEFAULT', 'scheduler_manager'): (None, None),
+ ('DEFAULT', 'security_group_api'): (None, None),
('DEFAULT', 'share_dhcp_address'): (None, None),
- ('neutron', 'api_insecure'): ('neutron', 'insecure'),
- ('cinder', 'ca_certificates_file'): ('cinder', 'cafile'),
- ('neutron', 'url_timeout'): ('neutron', 'timeout'),
- ('neutron', 'allow_duplicate_networks'): (None, None),
+ ('DEFAULT', 'use_syslog'): (None, None),
+ ('DEFAULT', 'vendordata_driver'): (None, None),
+ ('DEFAULT', 'volume_api_class'): (None, None),
+ ('cells', 'manager'): (None, None),
+ ('conductor', 'manager'): (None, None),
+ ('conductor', 'use_local'): (None, None),
+ ('glance', 'host'): (None, None),
+ ('glance', 'port'): (None, None),
+ ('glance', 'protocol'): (None, None),
+ ('hyperv', 'force_volumeutils_v1'): (None, None),
+ ('ironic', 'admin_auth_token'): (None, None),
+ ('ironic', 'api_version'): (None, None),
+ ('ironic', 'client_log_level'): (None, None),
+ ('libvirt', 'remove_unused_kernels'): (None, None),
+ ('osapi_v21', 'enabled'): (None, None),
+ ('osapi_v21', 'extensions_blacklist'): (None, None),
+ ('osapi_v21', 'extensions_whitelist'): (None, None),
+ ('osapi_v21', 'project_id_regex'): (None, None),
+ ('serial_console', 'listen'): (None, None),
+ ('workarounds', 'destroy_after_evacuate'): (None, None),
+ # move entries from DEFAULT.nova.virt.solariszones.driver to its own
+ # section
+ ('DEFAULT', 'boot_volume_type'): ('solariszones', 'boot_volume_type'),
+ ('DEFAULT', 'boot_volume_az'): ('solariszones', 'boot_volume_az'),
+ ('DEFAULT', 'glancecache_dirname'):
+ ('solariszones', 'glancecache_dirname'),
+ ('DEFAULT', 'live_migration_cipher'):
+ ('solariszones', 'live_migration_cipher'),
+ ('DEFAULT', 'solariszones_snapshots_directory'):
+ ('solariszones', 'solariszones_snapshots_directory'),
+ ('DEFAULT', 'zones_suspend_path'): ('solariszones', 'zones_suspend_path'),
+ ('DEFAULT', 'solariszones_boot_options'):
+ ('solariszones', 'solariszones_boot_options'),
}
+
+API_PASTE_MAPPING = {
+ ('composite:osapi_compute', '/v1.1'): (None, None),
+ ('composite:osapi_compute', '/v3'): (None, None),
+}
+
+
NOVA_CONF_EXCEPTIONS = [
('DEFAULT', 'ec2_workers'),
('DEFAULT', 'osapi_compute_workers'),
@@ -126,6 +129,12 @@
('keystone_authtoken', 'admin_password'),
('keystone_authtoken', 'admin_tenant_name'),
('neutron', 'service_metadata_proxy'),
+ ('neutron', 'username'),
+ ('neutron', 'password'),
+ ('neutron', 'tenant_name'),
+ ('neutron', 'auth_url'),
+
+
]
@@ -155,65 +164,11 @@
# backup all the old configuration files
create_backups('/etc/nova')
- modify_conf('/etc/nova/api-paste.ini')
+ modify_conf('/etc/nova/api-paste.ini', API_PASTE_MAPPING)
modify_conf('/etc/nova/logging.conf')
-
- # It's possible that nova.conf has database.connection commented out
- # (to use the default value). If it is, and none of other deprecated
- # values are set, manually set database.connection in the new conf
- # file.
- if os.path.exists('/etc/nova/nova.conf.new'):
-
- # open the previous version
- old = iniparse.ConfigParser()
- old.readfp(open('/etc/nova/nova.conf'))
-
- # open the new version
- new = iniparse.ConfigParser()
- new.readfp(open('/etc/nova/nova.conf.new'))
-
- options = [
- ('database', 'sql_connection'),
- ('sql', 'connection'),
- ('database', 'connection'),
- ('DEFAULT', 'sql_connection')
- ]
- test = lambda x: old.has_section(x[0]) and \
- old.has_option(x[0], x[1])
-
- if not any(map(test, options)):
- if old.has_option('DEFAULT', 'state_path'):
- state_path = old.get('DEFAULT', 'state_path')
- else:
- state_path = '/var/lib/nova'
-
- if old.has_option('DEFAULT', 'sqlite_db'):
- sqlite_db = old.get('DEFAULT', 'sqlite_db')
- else:
- sqlite_db = 'nova.sqlite'
-
- new.set('database', 'connection',
- 'sqlite:///%s/%s' % (state_path, sqlite_db))
-
- with open('/etc/nova/nova.conf.new', 'w+') as fh:
- new.write(fh)
-
modify_conf('/etc/nova/nova.conf', NOVA_CONF_MAPPINGS,
NOVA_CONF_EXCEPTIONS)
- config = iniparse.RawConfigParser()
- config.read('/etc/nova/nova.conf')
- # In certain cases the database section does not exist and the
- # default database chosen is sqlite.
- if config.has_section('database'):
- db_connection = config.get('database', 'connection')
-
- if db_connection.startswith('mysql'):
- engine = sqlalchemy.create_engine(db_connection)
- if engine.url.username != '%SERVICE_USER%':
- alter_mysql_tables(engine)
- print "altered character set to utf8 in nova tables"
-
# update the current version
check_call(['/usr/sbin/svccfg', '-s', os.environ['SMF_FMRI'], 'setprop',
'config/upgrade-id', '=', pkg_ver])
--- a/components/openstack/nova/files/nova.conf Wed Sep 07 14:48:42 2016 -0700
+++ b/components/openstack/nova/files/nova.conf Wed Sep 07 14:48:42 2016 -0700
@@ -1,4170 +1,5935 @@
[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=<None>
-
-# 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=nova
-
-# 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=<None>
-
-# 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 oslo.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
-
-# 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=<None>
-
-# 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=<None>
-
-# 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=<None>
-
-# (Optional) The base directory used for relative --log-file
-# paths. (string value)
-# Deprecated group/name - [DEFAULT]/logdir
-#log_dir=<None>
-
-# 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
-
-# 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,requests.packages.urllib3.util.retry=WARN,urllib3.util.retry=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] "
-
-
-#
-# Options defined in nova.availability_zones
-#
-
-# The availability_zone to show internal services under
-# (string value)
-#internal_service_availability_zone=internal
-
-# Default compute node availability_zone (string value)
-#default_availability_zone=nova
-
-
-#
-# Options defined in nova.crypto
-#
+# From nova
+#
+
+# Number of times to retry live-migration before failing. If == -1, try until
+# out of hosts. If == 0, only try once, no retries. (integer value)
+#migrate_max_retries = -1
+
+# The topic console auth proxy nodes listen on (string value)
+#consoleauth_topic = consoleauth
+
+# DEPRECATED: The driver to use for database access (string value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#db_driver = nova.db
+
+# Backend to use for IPv6 generation (string value)
+#ipv6_backend = rfc2462
+
+# The driver for servicegroup service. (string value)
+# Allowed values: db, mc
+#servicegroup_driver = db
+
+# Image ID used when starting up a cloudpipe vpn server (string value)
+#vpn_image_id = 0
+
+# Flavor for vpn instances (string value)
+#vpn_flavor = m1.tiny
+
+# Template for cloudpipe instance boot script (string value)
+#boot_script_template = $pybasedir/nova/cloudpipe/bootscript.template
+
+# Network to push into openvpn config (string value)
+#dmz_net = 10.0.0.0
+
+# Netmask to push into openvpn config (string value)
+#dmz_mask = 255.255.255.0
+
+# Suffix to add to project name for vpn key and secgroups (string value)
+#vpn_key_suffix = -vpn
+
+# This is the filename that will be used for storing websocket frames received
+# and sent by a proxy service (like VNC, spice, serial) running on this host.
+# If this is not set (default), no recording will be done. (string value)
+#record = <None>
+
+# Become a daemon (background process) (boolean value)
+#daemon = false
+
+# Disallow non-encrypted connections (boolean value)
+#ssl_only = false
+
+# Source is ipv6 (boolean value)
+#source_is_ipv6 = false
+
+# SSL certificate file (string value)
+#cert = self.pem
+
+# SSL key file (if separate from cert) (string value)
+#key = <None>
+
+# Run webserver on same port. Serve files from DIR. (string value)
+#web = /usr/share/spice-html5
+
+# Driver to use for the console proxy (string value)
+console_driver = nova.console.fake.FakeConsoleProxy
+
+# Stub calls to compute worker for tests (boolean value)
+#stub_compute = false
+
+# Publicly visible name for this console host (string value)
+#console_public_hostname =
+
+# The topic console proxy nodes listen on (string value)
+#console_topic = console
+
+# XVP conf template (string value)
+#console_xvp_conf_template = $pybasedir/nova/console/xvp.conf.template
+
+# Generated XVP conf file (string value)
+#console_xvp_conf = /etc/xvp.conf
+
+# XVP master process pid file (string value)
+#console_xvp_pid = /var/run/xvp.pid
+
+# XVP log file (string value)
+#console_xvp_log = /var/log/xvp.log
+
+# Port for XVP to multiplex VNC connections on (integer value)
+# Minimum value: 1
+# Maximum value: 65535
+#console_xvp_multiplex_port = 5900
+
+# How many seconds before deleting tokens (integer value)
+#console_token_ttl = 600
# Filename of root CA (string value)
-#ca_file=cacert.pem
+#ca_file = cacert.pem
# Filename of private key (string value)
-#key_file=private/cakey.pem
+#key_file = private/cakey.pem
# Filename of root Certificate Revocation List (string value)
-#crl_file=crl.pem
+#crl_file = crl.pem
# Where we keep our keys (string value)
-#keys_path=$state_path/keys
+#keys_path = $state_path/keys
# Where we keep our root CA (string value)
-#ca_path=$state_path/CA
+#ca_path = $state_path/CA
# Should we use a CA for each project? (boolean value)
-#use_project_ca=false
-
-# Subject for certificate for users, %s for project, user,
-# timestamp (string value)
-#user_cert_subject=/C=US/ST=California/O=OpenStack/OU=NovaDev/CN=%.16s-%.16s-%s
-
-# Subject for certificate for projects, %s for project,
-# timestamp (string value)
-#project_cert_subject=/C=US/ST=California/O=OpenStack/OU=NovaDev/CN=project-ca-%.16s-%s
-
-
-#
-# Options defined in nova.exception
-#
+#use_project_ca = false
+
+# Subject for certificate for users, %s for project, user, timestamp (string
+# value)
+#user_cert_subject = /C=US/ST=California/O=OpenStack/OU=NovaDev/CN=%.16s-%.16s-%s
+
+# Subject for certificate for projects, %s for project, timestamp (string
+# value)
+#project_cert_subject = /C=US/ST=California/O=OpenStack/OU=NovaDev/CN=project-ca-%.16s-%s
+
+# Services to be added to the available pool on create (boolean value)
+#enable_new_services = true
+
+# Template string to be used to generate instance names (string value)
+#instance_name_template = instance-%08x
+
+# Template string to be used to generate snapshot names (string value)
+#snapshot_name_template = snapshot-%s
+
+# When set, compute API will consider duplicate hostnames invalid within the
+# specified scope, regardless of case. Should be empty, "project" or "global".
+# (string value)
+#osapi_compute_unique_server_name_scope =
# Make exception message format errors fatal (boolean value)
-#fatal_exception_format_errors=false
-
-
-#
-# Options defined in nova.netconf
-#
+#fatal_exception_format_errors = false
# IP address of this host (string value)
-#my_ip=10.0.0.1
+#my_ip =
# Block storage IP address of this host (string value)
-#my_block_storage_ip=$my_ip
-
-# 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=nova
+#my_block_storage_ip = $my_ip
+
+# 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 =
# Use IPv6 (boolean value)
-#use_ipv6=false
-
-
-#
-# Options defined in nova.notifications
-#
-
-# If set, send compute.instance.update notifications on
-# instance state changes. Valid values are None for no
-# notifications, "vm_state" for notifications on VM state
-# changes, or "vm_and_task_state" for notifications on VM and
-# task state changes. (string value)
-#notify_on_state_change=<None>
-
-# If set, send api.fault notifications on caught exceptions in
-# the API service. (boolean value)
-#notify_api_faults=false
-
-# Default notification level for outgoing notifications
-# (string value)
-#default_notification_level=INFO
-
-# Default publisher_id for outgoing notifications (string
-# value)
-#default_publisher_id=<None>
-
-
-#
-# Options defined in nova.paths
-#
-
-# Directory where the nova python module is installed (string
-# value)
-pybasedir=/usr/lib/python2.7/vendor-packages
+#use_ipv6 = false
+
+# If set, send compute.instance.update notifications on instance state changes.
+# Valid values are None for no notifications, "vm_state" for notifications on
+# VM state changes, or "vm_and_task_state" for notifications on VM and task
+# state changes. (string value)
+#notify_on_state_change = <None>
+
+# If set, send api.fault notifications on caught exceptions in the API service.
+# (boolean value)
+#notify_api_faults = false
+
+# Default notification level for outgoing notifications (string value)
+# Allowed values: DEBUG, INFO, WARN, ERROR, CRITICAL
+#default_notification_level = INFO
+
+# Default publisher_id for outgoing notifications (string value)
+#default_publisher_id = <None>
+
+# DEPRECATED: THIS VALUE SHOULD BE SET WHEN CREATING THE NETWORK. If True in
+# multi_host mode, all compute hosts share the same dhcp address. The same IP
+# address used for DHCP will be added on each nova-network node which is only
+# visible to the vms on the same host. (boolean value)
+#share_dhcp_address = false
+
+# DEPRECATED: THIS VALUE SHOULD BE SET WHEN CREATING THE NETWORK. MTU setting
+# for network interface. (integer value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#network_device_mtu = <None>
+
+# Directory where the nova python module is installed (string value)
+pybasedir = /usr/lib/python2.7/vendor-packages
# Directory where nova binaries are installed (string value)
-bindir=/usr/bin
-
-# Top-level directory for maintaining nova's state (string
-# value)
-state_path=/var/lib/nova
-
-
-#
-# Options defined in nova.quota
-#
+bindir = /usr/lib/nova
+
+# Top-level directory for maintaining nova's state (string value)
+state_path = /var/lib/nova
# Number of instances allowed per project (integer value)
-#quota_instances=10
+#quota_instances = 10
# Number of instance cores allowed per project (integer value)
-#quota_cores=20
-
-# Megabytes of instance RAM allowed per project (integer
-# value)
-#quota_ram=51200
+#quota_cores = 20
+
+# Megabytes of instance RAM allowed per project (integer value)
+#quota_ram = 51200
# Number of floating IPs allowed per project (integer value)
-#quota_floating_ips=10
-
-# Number of fixed IPs allowed per project (this should be at
-# least the number of instances allowed) (integer value)
-#quota_fixed_ips=-1
-
-# Number of metadata items allowed per instance (integer
-# value)
-#quota_metadata_items=128
+#quota_floating_ips = 10
+
+# Number of fixed IPs allowed per project (this should be at least the number
+# of instances allowed) (integer value)
+#quota_fixed_ips = -1
+
+# Number of metadata items allowed per instance (integer value)
+#quota_metadata_items = 128
# Number of injected files allowed (integer value)
-#quota_injected_files=5
+#quota_injected_files = 5
# Number of bytes allowed per injected file (integer value)
-#quota_injected_file_content_bytes=10240
+#quota_injected_file_content_bytes = 10240
# Length of injected file path (integer value)
-#quota_injected_file_path_length=255
+#quota_injected_file_path_length = 255
# Number of security groups per project (integer value)
-#quota_security_groups=10
+#quota_security_groups = 10
# Number of security rules per security group (integer value)
-#quota_security_group_rules=20
+#quota_security_group_rules = 20
# Number of key pairs per user (integer value)
-#quota_key_pairs=100
+#quota_key_pairs = 100
# Number of server groups per project (integer value)
-#quota_server_groups=10
+#quota_server_groups = 10
# Number of servers per server group (integer value)
-#quota_server_group_members=10
-
-# Number of seconds until a reservation expires (integer
-# value)
-#reservation_expire=86400
-
-# Count of reservations until usage is refreshed. This
-# defaults to 0(off) to avoid additional load but it is useful
-# to turn on to help keep quota usage up to date and reduce
-# the impact of out of sync usage issues. (integer value)
-#until_refresh=0
-
-# Number of seconds between subsequent usage refreshes. This
-# defaults to 0(off) to avoid additional load but it is useful
-# to turn on to help keep quota usage up to date and reduce
-# the impact of out of sync usage issues. Note that quotas are
-# not updated on a periodic task, they will update on a new
-# reservation if max_age has passed since the last reservation
-# (integer value)
-#max_age=0
+#quota_server_group_members = 10
+
+# Number of seconds until a reservation expires (integer value)
+#reservation_expire = 86400
+
+# Count of reservations until usage is refreshed. This defaults to 0(off) to
+# avoid additional load but it is useful to turn on to help keep quota usage up
+# to date and reduce the impact of out of sync usage issues. (integer value)
+#until_refresh = 0
+
+# Number of seconds between subsequent usage refreshes. This defaults to 0(off)
+# to avoid additional load but it is useful to turn on to help keep quota usage
+# up to date and reduce the impact of out of sync usage issues. Note that
+# quotas are not updated on a periodic task, they will update on a new
+# reservation if max_age has passed since the last reservation (integer value)
+#max_age = 0
# Default driver to use for quota checks (string value)
-#quota_driver=nova.quota.DbQuotaDriver
-
-
-#
-# Options defined in nova.service
-#
-
-# Seconds between nodes reporting state to datastore (integer
-# value)
-#report_interval=10
+#quota_driver = nova.quota.DbQuotaDriver
+
+# Seconds between nodes reporting state to datastore (integer value)
+#report_interval = 10
# Enable periodic tasks (boolean value)
-#periodic_enable=true
-
-# Range of seconds to randomly delay when starting the
-# periodic task scheduler to reduce stampeding. (Disable by
-# setting to 0) (integer value)
-#periodic_fuzzy_delay=60
+#periodic_enable = true
+
+# Range of seconds to randomly delay when starting the periodic task scheduler
+# to reduce stampeding. (Disable by setting to 0) (integer value)
+#periodic_fuzzy_delay = 60
# A list of APIs to enable by default (list value)
-#enabled_apis=ec2,osapi_compute,metadata
+#enabled_apis = osapi_compute,metadata
# A list of APIs with enabled SSL (list value)
-#enabled_ssl_apis=
-
-# The IP address on which the EC2 API will listen. (string
-# value)
-#ec2_listen=0.0.0.0
-
-# The port on which the EC2 API will listen. (integer value)
-#ec2_listen_port=8773
-
-# Number of workers for EC2 API service. The default will be
-# equal to the number of CPUs available. (integer value)
-ec2_workers=1
-
-# The IP address on which the OpenStack API will listen.
-# (string value)
-#osapi_compute_listen=0.0.0.0
-
-# The port on which the OpenStack API will listen. (integer
-# value)
-#osapi_compute_listen_port=8774
-
-# Number of workers for OpenStack API service. The default
-# will be the number of CPUs available. (integer value)
-osapi_compute_workers=1
-
-# OpenStack metadata service manager (string value)
-#metadata_manager=nova.api.manager.MetadataManager
-
-# The IP address on which the metadata API will listen.
-# (string value)
-#metadata_listen=0.0.0.0
-
-# The port on which the metadata API will listen. (integer
-# value)
-#metadata_listen_port=8775
-
-# Number of workers for metadata service. The default will be
-# the number of CPUs available. (integer value)
-metadata_workers=1
-
-# Full class name for the Manager for compute (string value)
-#compute_manager=nova.compute.manager.ComputeManager
-
-# Full class name for the Manager for console proxy (string
-# value)
-#console_manager=nova.console.manager.ConsoleProxyManager
-
-# Manager for console auth (string value)
-#consoleauth_manager=nova.consoleauth.manager.ConsoleAuthManager
-
-# Full class name for the Manager for cert (string value)
-#cert_manager=nova.cert.manager.CertManager
+#enabled_ssl_apis =
+
+# The IP address on which the OpenStack API will listen. (string value)
+#osapi_compute_listen = 0.0.0.0
+
+# The port on which the OpenStack API will listen. (integer value)
+# Minimum value: 1
+# Maximum value: 65535
+#osapi_compute_listen_port = 8774
+
+# Number of workers for OpenStack API service. The default will be the number
+# of CPUs available. (integer value)
+osapi_compute_workers = 1
+
+# DEPRECATED: OpenStack metadata service manager (string value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#metadata_manager = nova.api.manager.MetadataManager
+
+# The IP address on which the metadata API will listen. (string value)
+#metadata_listen = 0.0.0.0
+
+# The port on which the metadata API will listen. (integer value)
+# Minimum value: 1
+# Maximum value: 65535
+#metadata_listen_port = 8775
+
+# Number of workers for metadata service. The default will be the number of
+# CPUs available. (integer value)
+metadata_workers = 1
+
+# DEPRECATED: Full class name for the Manager for compute (string value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#compute_manager = nova.compute.manager.ComputeManager
+
+# DEPRECATED: Full class name for the Manager for console proxy (string value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#console_manager = nova.console.manager.ConsoleProxyManager
+
+# DEPRECATED: Manager for console auth (string value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#consoleauth_manager = nova.consoleauth.manager.ConsoleAuthManager
+
+# DEPRECATED: Full class name for the Manager for cert (string value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#cert_manager = nova.cert.manager.CertManager
# Full class name for the Manager for network (string value)
-#network_manager=nova.network.manager.VlanManager
-
-# Full class name for the Manager for scheduler (string value)
-#scheduler_manager=nova.scheduler.manager.SchedulerManager
-
-# Maximum time since last check-in for up service (integer
-# value)
-#service_down_time=60
-
-
-#
-# Options defined in nova.utils
-#
-
-# Whether to log monkey patching (boolean value)
-#monkey_patch=false
+#network_manager = nova.network.manager.VlanManager
+
+# DEPRECATED: Full class name for the Manager for scheduler (string value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#scheduler_manager = nova.scheduler.manager.SchedulerManager
+
+# Maximum time since last check-in for up service (integer value)
+#service_down_time = 60
+
+# Whether to apply monkey patching (boolean value)
+#monkey_patch = false
# List of modules/decorators to monkey patch (list value)
-#monkey_patch_modules=nova.api.ec2.cloud:nova.notifications.notify_decorator,nova.compute.api:nova.notifications.notify_decorator
+#monkey_patch_modules = nova.compute.api:nova.notifications.notify_decorator
# Length of generated instance admin passwords (integer value)
-#password_length=12
-
-# Time period to generate instance usages for. Time period
-# must be hour, day, month or year (string value)
-#instance_usage_audit_period=month
-
-# Path to the rootwrap configuration file to use for running
-# commands as root (string value)
-#rootwrap_config=/etc/nova/rootwrap.conf
-
-# Explicitly specify the temporary working directory (string
-# value)
-#tempdir=<None>
-
-
-#
-# Options defined in nova.wsgi
-#
-
-# File name for the paste.deploy config for nova-api (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 be formatted
-# 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
-
-# CA certificate file to use to verify connecting clients
+#password_length = 12
+
+# Time period to generate instance usages for. Time period must be hour, day,
+# month or year (string value)
+#instance_usage_audit_period = month
+
+# Start and use a daemon that can run the commands that need to be run with
+# root privileges. This option is usually enabled on nodes that run nova
+# compute processes (boolean value)
+#use_rootwrap_daemon = false
+
+# Path to the rootwrap configuration file to use for running commands as root
# (string value)
-#ssl_ca_file=<None>
-
-# SSL certificate of API server (string value)
-#ssl_cert_file=<None>
-
-# SSL private key of API server (string value)
-#ssl_key_file=<None>
-
-# 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)
-#wsgi_default_pool_size=1000
-
-# Maximum line size of message headers to be accepted.
-# max_header_line may need to be increased when using large
-# tokens (typically those generated by the Keystone v3 API
-# 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
-
-
-#
-# Options defined in nova.api.auth
-#
-
-# Whether to use per-user rate limiting for the api. This
-# option is only used by v2 api. Rate limiting is removed from
-# v3 api. (boolean value)
-#api_rate_limit=false
-
-# The strategy to use for auth: keystone, noauth
-# (deprecated), or noauth2. Both noauth and noauth2 are
-# designed for testing only, as they do no actual credential
-# checking. noauth provides administrative credentials
-# regardless of the passed in user, noauth2 only does if
-# 'admin' is specified as the username. (string value)
-#auth_strategy=keystone
-
-# Treat X-Forwarded-For as the canonical remote address. Only
-# enable this if you have a sanitizing proxy. (boolean value)
-#use_forwarded_for=false
-
-
-#
-# Options defined in nova.api.ec2
-#
-
-# Number of failed auths before lockout. (integer value)
-#lockout_attempts=5
-
-# Number of minutes to lockout if triggered. (integer value)
-#lockout_minutes=15
-
-# Number of minutes for lockout window. (integer value)
-#lockout_window=15
-
-# URL to get token from ec2 request. (string value)
-#keystone_ec2_url=http://localhost:5000/v2.0/ec2tokens
-
-# Return the IP address as private dns hostname in describe
-# instances (boolean value)
-#ec2_private_dns_show_ip=false
-
-# Validate security group names according to EC2 specification
-# (boolean value)
-#ec2_strict_validation=true
-
-# Time in seconds before ec2 timestamp expires (integer value)
-#ec2_timestamp_expiry=300
-
-# Disable SSL certificate verification. (boolean value)
-#keystone_ec2_insecure=false
-
-
-#
-# Options defined in nova.api.ec2.cloud
-#
-
-# The IP address of the EC2 API server (string value)
-#ec2_host=$my_ip
-
-# The internal IP address of the EC2 API server (string value)
-#ec2_dmz_host=$my_ip
-
-# The port of the EC2 API server (integer value)
-#ec2_port=8773
-
-# The protocol to use when connecting to the EC2 API server
-# (http, https) (string value)
-#ec2_scheme=http
-
-# The path prefix used to call the ec2 API server (string
-# value)
-#ec2_path=/
-
-# List of region=fqdn pairs separated by commas (list value)
-#region_list=
-
-
-#
-# Options defined in nova.api.metadata.base
-#
-
-# List of metadata versions to skip placing into the config
-# drive (string value)
-#config_drive_skip_versions=1.0 2007-01-19 2007-03-01 2007-08-29 2007-10-10 2007-12-15 2008-02-01 2008-09-01
-
-# Driver to use for vendor data (string value)
-#vendordata_driver=nova.api.metadata.vendordata_json.JsonFileVendorData
-
-
-#
-# Options defined in nova.api.metadata.handler
-#
-
-# Time in seconds to cache metadata; 0 to disable metadata
-# caching entirely (not recommended). Increasingthis should
-# improve response times of the metadata API when under heavy
-# load. Higher values may increase memoryusage and result in
-# longer times for host metadata changes to take effect.
-# (integer value)
-#metadata_cache_expiration=15
-
-
-#
-# Options defined in nova.api.metadata.vendordata_json
+#rootwrap_config = /etc/nova/rootwrap.conf
+
+# Explicitly specify the temporary working directory (string value)
+#tempdir = <None>
+
+# DEPRECATED: The full class name of the volume API class to use (string value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#volume_api_class = nova.volume.cinder.API
+
+#
+# From nova.api
#
# File to load JSON formatted vendor data from (string value)
-#vendordata_jsonfile_path=<None>
-
-
-#
-# Options defined in nova.api.openstack.common
-#
-
-# The maximum number of items returned in a single response
-# from a collection resource (integer value)
-#osapi_max_limit=1000
-
-# Base URL that will be presented to users in links to the
-# OpenStack Compute API (string value)
-#osapi_compute_link_prefix=<None>
-
-# Base URL that will be presented to users in links to glance
-# resources (string value)
-#osapi_glance_link_prefix=<None>
-
-
-#
-# Options defined in nova.api.openstack.compute
-#
+#vendordata_jsonfile_path = <None>
# Permit instance snapshot operations. (boolean value)
-#allow_instance_snapshots=true
-
-
-#
-# Options defined in nova.api.openstack.compute.contrib
-#
-
-# Specify list of extensions to load when using
+#allow_instance_snapshots = true
+
+# Whether to use per-user rate limiting for the api. This option is only used
+# by v2 api. Rate limiting is removed from v2.1 api. (boolean value)
+#api_rate_limit = false
+
+#
+# The strategy to use for auth: keystone or noauth2. noauth2 is designed for
+# testing only, as it does no actual credential checking. noauth2 provides
+# administrative credentials only if 'admin' is specified as the username.
+# (string value)
+# Allowed values: keystone, noauth2
+#auth_strategy = keystone
+
+# Treat X-Forwarded-For as the canonical remote address. Only enable this if
+# you have a sanitizing proxy. (boolean value)
+#use_forwarded_for = false
+
+# List of metadata versions to skip placing into the config drive (string
+# value)
+#config_drive_skip_versions = 1.0 2007-01-19 2007-03-01 2007-08-29 2007-10-10 2007-12-15 2008-02-01 2008-09-01
+
+# DEPRECATED: Driver to use for vendor data (string value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#vendordata_driver = nova.api.metadata.vendordata_json.JsonFileVendorData
+
+# Time in seconds to cache metadata; 0 to disable metadata caching entirely
+# (not recommended). Increasingthis should improve response times of the
+# metadata API when under heavy load. Higher values may increase memoryusage
+# and result in longer times for host metadata changes to take effect. (integer
+# value)
+#metadata_cache_expiration = 15
+
+# The maximum number of items returned in a single response from a collection
+# resource (integer value)
+#osapi_max_limit = 1000
+
+# Base URL that will be presented to users in links to the OpenStack Compute
+# API (string value)
+#osapi_compute_link_prefix = <None>
+
+# Base URL that will be presented to users in links to glance resources (string
+# value)
+#osapi_glance_link_prefix = <None>
+
+# DEPRECATED: Specify list of extensions to load when using
# osapi_compute_extension option with
-# nova.api.openstack.compute.contrib.select_extensions (list
-# value)
-#osapi_compute_ext_list=
-
-
-#
-# Options defined in nova.api.openstack.compute.contrib.fping
-#
+# nova.api.openstack.compute.legacy_v2.contrib.select_extensions This option
+# will be removed in the near future. After that point you have to run all of
+# the API. (list value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#osapi_compute_ext_list =
# Full path to fping. (string value)
-fping_path=/usr/bin/fping
-
-
-#
-# Options defined in nova.api.openstack.compute.contrib.os_tenant_networks
-#
-
-# Enables or disables quota checking for tenant networks
-# (boolean value)
-#enable_network_quota=false
+fping_path = /usr/bin/fping
+
+# Enables or disables quota checking for tenant networks (boolean value)
+#enable_network_quota = false
# Control for checking for default networks (string value)
-#use_neutron_default_nets=False
-
-# Default tenant id when creating neutron networks (string
-# value)
-#neutron_default_tenant_id=default
-
-# Number of private networks allowed per project (integer
-# value)
-#quota_networks=3
-
-
-#
-# Options defined in nova.api.openstack.compute.extensions
-#
-
-# osapi compute extension to load (multi valued)
-#osapi_compute_extension=nova.api.openstack.compute.contrib.standard_extensions
-
-
-#
-# Options defined in nova.api.openstack.compute.plugins.v3.hide_server_addresses
-#
-
-# List of instance states that should hide network info (list
+#use_neutron_default_nets = False
+
+# Default tenant id when creating neutron networks (string value)
+#neutron_default_tenant_id = default
+
+# Number of private networks allowed per project (integer value)
+#quota_networks = 3
+
+# osapi compute extension to load. This option will be removed in the near
+# future. After that point you have to run all of the API. (multi valued)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#osapi_compute_extension = nova.api.openstack.compute.legacy_v2.contrib.standard_extensions
+
+# List of instance states that should hide network info (list value)
+#osapi_hide_server_address_states = building
+
+# Enables returning of the instance password by the relevant server API calls
+# such as create, rebuild or rescue, If the hypervisor does not support
+# password injection then the password returned will not be correct (boolean
# value)
-#osapi_hide_server_address_states=building
-
-
-#
-# Options defined in nova.api.openstack.compute.servers
-#
-
-# Enables returning of the instance password by the relevant
-# server API calls such as create, rebuild or rescue, If the
-# hypervisor does not support password injection then the
-# password returned will not be correct (boolean value)
-#enable_instance_password=true
-
-
-#
-# Options defined in nova.cert.rpcapi
-#
-
-# The topic cert nodes listen on (string value)
-#cert_topic=cert
-
-
-#
-# Options defined in nova.cloudpipe.pipelib
-#
-
-# Image ID used when starting up a cloudpipe vpn server
-# (string value)
-#vpn_image_id=0
-
-# Flavor for vpn instances (string value)
-#vpn_flavor=m1.tiny
-
-# Template for cloudpipe instance boot script (string value)
-#boot_script_template=$pybasedir/nova/cloudpipe/bootscript.template
-
-# Network to push into openvpn config (string value)
-#dmz_net=10.0.0.0
-
-# Netmask to push into openvpn config (string value)
-#dmz_mask=255.255.255.0
-
-# Suffix to add to project name for vpn key and secgroups
-# (string value)
-#vpn_key_suffix=-vpn
-
-
-#
-# Options defined in nova.cmd.novnc
-#
-
-# Record sessions to FILE.[session_number] (boolean value)
-#record=false
-
-# Become a daemon (background process) (boolean value)
-#daemon=false
-
-# Disallow non-encrypted connections (boolean value)
-#ssl_only=false
-
-# Source is ipv6 (boolean value)
-#source_is_ipv6=false
-
-# SSL certificate file (string value)
-#cert=self.pem
-
-# SSL key file (if separate from cert) (string value)
-#key=<None>
-
-# Run webserver on same port. Serve files from DIR. (string
+#enable_instance_password = true
+
+#
+# From nova.cache_utils
+#
+
+# DEPRECATED: Memcached servers or None for in process cache.
+# "memcached_servers" opt is deprecated in Mitaka. In Newton release oslo.cache
+# config options should be used as this option will be removed. Please add a
+# [cache] group in your nova.conf file and add "enable" and "memcache_servers"
+# option in this section. (list value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#memcached_servers = <None>
+
+#
+# From nova.compute
+#
+
+# Default flavor to use for the EC2 API only. The Nova API does not support a
+# default flavor. (string value)
+#default_flavor = m1.small
+
+# Console proxy host to use to connect to instances on this host. (string
# value)
-#web=/usr/share/spice-html5
-
-
-#
-# Options defined in nova.cmd.novncproxy
-#
-
-# Host on which to listen for incoming requests (string value)
-#novncproxy_host=0.0.0.0
-
-# Port on which to listen for incoming requests (integer
-# value)
-#novncproxy_port=6080
-
-
-#
-# Options defined in nova.compute.api
-#
-
-# Allow destination machine to match source for resize. Useful
-# when testing in single-host environments. (boolean value)
-#allow_resize_to_same_host=false
-
-# Allow migrate machine to the same host. Useful when testing
-# in single-host environments. (boolean value)
-#allow_migrate_to_same_host=false
-
-# Availability zone to use when user doesn't specify one
-# (string value)
-#default_schedule_zone=<None>
-
-# These are image properties which a snapshot should not
-# inherit from an instance (list value)
-#non_inheritable_image_properties=cache_in_nova,bittorrent
-
-# Kernel image that indicates not to use a kernel, but to use
-# a raw disk image instead (string value)
-#null_kernel=nokernel
-
-# When creating multiple instances with a single request using
-# the os-multiple-create API extension, this template will be
-# used to build the display name for each instance. The
-# benefit is that the instances end up with different
-# hostnames. To restore legacy behavior of every instance
-# having the same name, set this option to "%(name)s". Valid
-# keys for the template are: name, uuid, count. (string value)
-#multi_instance_display_name_template=%(name)s-%(count)d
-
-# Maximum number of devices that will result in a local image
-# being created on the hypervisor node. Setting this to 0
-# means nova will allow only boot from volume. A negative
-# number means unlimited. (integer value)
-#max_local_block_devices=3
-
-
-#
-# Options defined in nova.compute.flavors
-#
-
-# Default flavor to use for the EC2 API only. The Nova API
-# does not support a default flavor. (string value)
-#default_flavor=m1.small
-
-
-#
-# Options defined in nova.compute.manager
-#
-
-# Console proxy host to use to connect to instances on this
-# host. (string value)
-#console_host=nova
-
-# Name of network to use to set access IPs for instances
-# (string value)
-#default_access_ip_network_name=<None>
-
-# Whether to batch up the application of IPTables rules during
-# a host restart and apply all at the end of the init phase
-# (boolean value)
-#defer_iptables_apply=false
+#console_host =
+
+# Name of network to use to set access IPs for instances (string value)
+#default_access_ip_network_name = <None>
+
+# Whether to batch up the application of IPTables rules during a host restart
+# and apply all at the end of the init phase (boolean value)
+#defer_iptables_apply = false
# Where instances are stored on disk (string value)
-#instances_path=$state_path/instances
-
-# Generate periodic compute.instance.exists notifications
-# (boolean value)
-#instance_usage_audit=false
-
-# Number of 1 second retries needed in live_migration (integer
+#instances_path = $state_path/instances
+
+# Generate periodic compute.instance.exists notifications (boolean value)
+#instance_usage_audit = false
+
+# Number of 1 second retries needed in live_migration (integer value)
+#live_migration_retry_count = 30
+
+# Whether to start guests that were running before the host rebooted (boolean
# value)
-#live_migration_retry_count=30
-
-# Whether to start guests that were running before the host
-# rebooted (boolean value)
-#resume_guests_state_on_host_boot=false
-
-# Number of times to retry network allocation on failures
-# (integer value)
-#network_allocate_retries=0
-
-# Maximum number of instance builds to run concurrently
-# (integer value)
-#max_concurrent_builds=10
-
-# Number of times to retry block device allocation on failures
-# (integer value)
-#block_device_allocate_retries=60
-
-# The number of times to attempt to reap an instance's files.
-# (integer value)
-#maximum_instance_delete_attempts=5
-
-# Interval to pull network bandwidth usage info. Not supported
-# on all hypervisors. Set to -1 to disable. Setting this to 0
-# will run at the default rate. (integer value)
-#bandwidth_poll_interval=600
-
-# Interval to sync power states between the database and the
-# hypervisor. Set to -1 to disable. Setting this to 0 will run
-# at the default rate. (integer value)
-#sync_power_state_interval=600
-
-# Number of seconds between instance network information cache
-# updates (integer value)
-#heal_instance_info_cache_interval=60
-
-# Interval in seconds for reclaiming deleted instances
-# (integer value)
-#reclaim_instance_interval=0
-
-# Interval in seconds for gathering volume usages (integer
+#resume_guests_state_on_host_boot = false
+
+# Number of times to retry network allocation on failures (integer value)
+#network_allocate_retries = 0
+
+# Maximum number of instance builds to run concurrently (integer value)
+#max_concurrent_builds = 10
+
+# Maximum number of live migrations to run concurrently. This limit is enforced
+# to avoid outbound live migrations overwhelming the host/network and causing
+# failures. It is not recommended that you change this unless you are very sure
+# that doing so is safe and stable in your environment. (integer value)
+#max_concurrent_live_migrations = 1
+
+# Number of times to retry block device allocation on failures.
+# Starting with Liberty, Cinder can use image volume cache. This may help with
+# block device allocation performance. Look at the cinder
+# image_volume_cache_enabled configuration option. (integer value)
+#block_device_allocate_retries = 60
+
+# The number of times to attempt to reap an instance's files. (integer value)
+#maximum_instance_delete_attempts = 5
+
+# Interval to pull network bandwidth usage info. Not supported on all
+# hypervisors. Set to -1 to disable. Setting this to 0 will run at the default
+# rate. (integer value)
+#bandwidth_poll_interval = 600
+
+# Interval to sync power states between the database and the hypervisor. Set to
+# -1 to disable. Setting this to 0 will run at the default rate. (integer
+# value)
+#sync_power_state_interval = 600
+
+# Number of seconds between instance network information cache updates (integer
# value)
-#volume_usage_poll_interval=0
-
-# Interval in seconds for polling shelved instances to
-# offload. Set to -1 to disable.Setting this to 0 will run at
-# the default rate. (integer value)
-#shelved_poll_interval=3600
-
-# Time in seconds before a shelved instance is eligible for
-# removing from a host. -1 never offload, 0 offload
-# immediately when shelved (integer value)
-#shelved_offload_time=0
-
-# Interval in seconds for retrying failed instance file
-# deletes. Set to -1 to disable. Setting this to 0 will run at
-# the default rate. (integer value)
-#instance_delete_interval=300
-
-# Waiting time interval (seconds) between block device
-# allocation retries on failures (integer value)
-#block_device_allocate_retries_interval=3
-
-# Waiting time interval (seconds) between sending the
-# scheduler a list of current instance UUIDs to verify that
-# its view of instances is in sync with nova. If the CONF
-# option `scheduler_tracks_instance_changes` is False,
+#heal_instance_info_cache_interval = 60
+
+# Interval in seconds for reclaiming deleted instances. It takes effect only
+# when value is greater than 0. (integer value)
+# Minimum value: 0
+#reclaim_instance_interval = 0
+
+# Interval in seconds for gathering volume usages (integer value)
+#volume_usage_poll_interval = 0
+
+# Interval in seconds for polling shelved instances to offload. Set to -1 to
+# disable.Setting this to 0 will run at the default rate. (integer value)
+#shelved_poll_interval = 3600
+
+# Time in seconds before a shelved instance is eligible for removing from a
+# host. -1 never offload, 0 offload immediately when shelved (integer value)
+#shelved_offload_time = 0
+
+# Interval in seconds for retrying failed instance file deletes. Set to -1 to
+# disable. Setting this to 0 will run at the default rate. (integer value)
+#instance_delete_interval = 300
+
+# Waiting time interval (seconds) between block device allocation retries on
+# failures (integer value)
+#block_device_allocate_retries_interval = 3
+
+# Waiting time interval (seconds) between sending the scheduler a list of
+# current instance UUIDs to verify that its view of instances is in sync with
+# nova. If the CONF option `scheduler_tracks_instance_changes` is False,
# changing this option will have no effect. (integer value)
-#scheduler_instance_sync_interval=120
-
-# Action to take if a running deleted instance is detected.
-# Valid options are 'noop', 'log', 'shutdown', or 'reap'. Set
-# to 'noop' to take no action. (string value)
-#running_deleted_instance_action=reap
-
-# Number of seconds to wait between runs of the cleanup task.
+#scheduler_instance_sync_interval = 120
+
+# Interval in seconds for updating compute resources. A number less than 0
+# means to disable the task completely. Leaving this at the default of 0 will
+# cause this to run at the default periodic interval. Setting it to any
+# positive value will cause it to run at approximately that number of seconds.
# (integer value)
-#running_deleted_instance_poll_interval=1800
-
-# Number of seconds after being deleted when a running
-# instance should be considered eligible for cleanup. (integer
-# value)
-#running_deleted_instance_timeout=0
-
-# Automatically hard reboot an instance if it has been stuck
-# in a rebooting state longer than N seconds. Set to 0 to
-# disable. (integer value)
-#reboot_timeout=0
-
-# Amount of time in seconds an instance can be in BUILD before
-# going into ERROR status. Set to 0 to disable. (integer
-# value)
-#instance_build_timeout=0
-
-# Automatically unrescue an instance after N seconds. Set to 0
+#update_resources_interval = 0
+
+# Action to take if a running deleted instance is detected.Set to 'noop' to
+# take no action. (string value)
+# Allowed values: noop, log, shutdown, reap
+#running_deleted_instance_action = reap
+
+# Number of seconds to wait between runs of the cleanup task. (integer value)
+#running_deleted_instance_poll_interval = 1800
+
+# Number of seconds after being deleted when a running instance should be
+# considered eligible for cleanup. (integer value)
+#running_deleted_instance_timeout = 0
+
+# Automatically hard reboot an instance if it has been stuck in a rebooting
+# state longer than N seconds. Set to 0 to disable. (integer value)
+#reboot_timeout = 0
+
+# Amount of time in seconds an instance can be in BUILD before going into ERROR
+# status. Set to 0 to disable. (integer value)
+#instance_build_timeout = 0
+
+# Automatically unrescue an instance after N seconds. Set to 0 to disable.
+# (integer value)
+#rescue_timeout = 0
+
+# Automatically confirm resizes and cold migrations after N seconds. Set to 0
# to disable. (integer value)
-#rescue_timeout=0
-
-# Automatically confirm resizes after N seconds. Set to 0 to
-# disable. (integer value)
-#resize_confirm_window=0
-
-# Total amount of time to wait in seconds for an instance to
-# perform a clean shutdown. (integer value)
-#shutdown_timeout=60
-
-
-#
-# Options defined in nova.compute.monitors
-#
-
-# Monitor classes available to the compute which may be
-# specified more than once. (multi valued)
-#compute_available_monitors=nova.compute.monitors.all_monitors
-
-# A list of monitors that can be used for getting compute
-# metrics. (list value)
-#compute_monitors=
-
-
-#
-# Options defined in nova.compute.resource_tracker
-#
+#resize_confirm_window = 0
+
+# Total amount of time to wait in seconds for an instance to perform a clean
+# shutdown. (integer value)
+#shutdown_timeout = 60
+
+# Monitor classes available to the compute which may be specified more than
+# once. This option is DEPRECATED and no longer used. Use setuptools entry
+# points to list available monitor plugins. (multi valued)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#compute_available_monitors =
+
+# A list of monitors that can be used for getting compute metrics. You can use
+# the alias/name from the setuptools entry points for nova.compute.monitors.*
+# namespaces. If no namespace is supplied, the "cpu." namespace is assumed for
+# backwards-compatibility. An example value that would enable both the CPU and
+# NUMA memory bandwidth monitors that used the virt driver variant:
+# ["cpu.virt_driver", "numa_mem_bw.virt_driver"] (list value)
+#compute_monitors =
# Amount of disk in MB to reserve for the host (integer value)
-#reserved_host_disk_mb=0
-
-# Amount of memory in MB to reserve for the host (integer
+#reserved_host_disk_mb = 0
+
+# Amount of memory in MB to reserve for the host (integer value)
+#reserved_host_memory_mb = 512
+
+# DEPRECATED: Class that will manage stats for the local compute host (string
# value)
-#reserved_host_memory_mb=512
-
-# Class that will manage stats for the local compute host
-# (string value)
-#compute_stats_class=nova.compute.stats.Stats
-
-# The names of the extra resources to track. (list value)
-#compute_resources=vcpu
-
-
-#
-# Options defined in nova.compute.rpcapi
-#
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#compute_stats_class = nova.compute.stats.Stats
+
+# DEPRECATED: The names of the extra resources to track. The Extensible
+# Resource Tracker is deprecated and will be removed in the 14.0.0 release. If
+# you use this functionality and have custom resources that are managed by the
+# Extensible Resource Tracker, please contact the Nova development team by
+# posting to the openstack-dev mailing list. There is no future planned support
+# for the tracking of custom resources. (list value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#compute_resources =
+
+# Virtual CPU to physical CPU allocation ratio which affects all CPU filters.
+# This configuration specifies a global ratio for CoreFilter. For
+# AggregateCoreFilter, it will fall back to this configuration value if no per-
+# aggregate setting found. NOTE: This can be set per-compute, or if set to 0.0,
+# the value set on the scheduler node(s) will be used and defaulted to 16.0
+# (floating point value)
+#cpu_allocation_ratio = 0.0
+
+# Virtual ram to physical ram allocation ratio which affects all ram filters.
+# This configuration specifies a global ratio for RamFilter. For
+# AggregateRamFilter, it will fall back to this configuration value if no per-
+# aggregate setting found. NOTE: This can be set per-compute, or if set to 0.0,
+# the value set on the scheduler node(s) will be used and defaulted to 1.5
+# (floating point value)
+#ram_allocation_ratio = 0.0
+
+# This is the virtual disk to physical disk allocation ratio used by the
+# disk_filter.py script to determine if a host has sufficient disk space to fit
+# a requested instance. A ratio greater than 1.0 will result in over-
+# subscription of the available physical disk, which can be useful for more
+# efficiently packing instances created with images that do not use the entire
+# virtual disk,such as sparse or compressed images. It can be set to a value
+# between 0.0 and 1.0 in order to preserve a percentage of the disk for uses
+# other than instances.NOTE: This can be set per-compute, or if set to 0.0, the
+# value set on the scheduler node(s) will be used and defaulted to 1.0
+# (floating point value)
+#disk_allocation_ratio = 0.0
# The topic compute nodes listen on (string value)
-#compute_topic=compute
-
-
-#
-# Options defined in nova.conductor.tasks.live_migrate
-#
-
-# Number of times to retry live-migration before failing. If
-# == -1, try until out of hosts. If == 0, only try once, no
-# retries. (integer value)
-#migrate_max_retries=-1
-
-
-#
-# Options defined in nova.console.manager
-#
-
-# Driver to use for the console proxy (string value)
-console_driver=nova.console.fake.FakeConsoleProxy
-
-# Stub calls to compute worker for tests (boolean value)
-#stub_compute=false
-
-# Publicly visible name for this console host (string value)
-#console_public_hostname=nova
-
-
-#
-# Options defined in nova.console.rpcapi
-#
-
-# The topic console proxy nodes listen on (string value)
-#console_topic=console
-
-
-#
-# Options defined in nova.console.xvp
-#
-
-# XVP conf template (string value)
-#console_xvp_conf_template=$pybasedir/nova/console/xvp.conf.template
-
-# Generated XVP conf file (string value)
-#console_xvp_conf=/etc/xvp.conf
-
-# XVP master process pid file (string value)
-#console_xvp_pid=/var/run/xvp.pid
-
-# XVP log file (string value)
-#console_xvp_log=/var/log/xvp.log
-
-# Port for XVP to multiplex VNC connections on (integer value)
-#console_xvp_multiplex_port=5900
-
-
-#
-# Options defined in nova.consoleauth
-#
-
-# The topic console auth proxy nodes listen on (string value)
-#consoleauth_topic=consoleauth
-
-
-#
-# Options defined in nova.consoleauth.manager
-#
-
-# How many seconds before deleting tokens (integer value)
-#console_token_ttl=600
-
-
-#
-# Options defined in nova.db.api
-#
-
-# Services to be added to the available pool on create
-# (boolean value)
-#enable_new_services=true
-
-# Template string to be used to generate instance names
-# (string value)
-#instance_name_template=instance-%08x
-
-# Template string to be used to generate snapshot names
-# (string value)
-#snapshot_name_template=snapshot-%s
-
-
-#
-# Options defined in nova.db.base
-#
-
-# The driver to use for database access (string value)
-#db_driver=nova.db
-
-
-#
-# Options defined in nova.db.sqlalchemy.api
-#
-
-# When set, compute API will consider duplicate hostnames
-# invalid within the specified scope, regardless of case.
-# Should be empty, "project" or "global". (string value)
-#osapi_compute_unique_server_name_scope=
-
-
-#
-# Options defined in nova.image.s3
-#
-
-# Parent directory for tempdir used for image decryption
-# (string value)
-#image_decryption_dir=/tmp
-
-# Hostname or IP for OpenStack to use when accessing the S3
-# api (string value)
-#s3_host=$my_ip
-
-# Port used when accessing the S3 api (integer value)
-#s3_port=3333
-
-# Access key to use for S3 server for images (string value)
-#s3_access_key=notchecked
-
-# Secret key to use for S3 server for images (string value)
-#s3_secret_key=notchecked
-
-# Whether to use SSL when talking to S3 (boolean value)
-#s3_use_ssl=false
-
-# Whether to affix the tenant id to the access key when
-# downloading from S3 (boolean value)
-#s3_affix_tenant=false
-
-
-#
-# Options defined in nova.ipv6.api
-#
-
-# Backend to use for IPv6 generation (string value)
-#ipv6_backend=rfc2462
-
-
-#
-# Options defined in nova.network
-#
-
-# The full class name of the network API class to use (string
-# value)
-network_api_class=nova.network.neutronv2.api.API
-
-
-#
-# Options defined in nova.network.driver
-#
+#compute_topic = compute
+
+#
+# From nova.conf
+#
+
+# The availability_zone to show internal services under (string value)
+#internal_service_availability_zone = internal
+
+# Default compute node availability_zone (string value)
+#default_availability_zone = nova
+
+#
+# Determines the RPC topic that the cert nodes listen on. The default is
+# 'cert',
+# and for most deployments there is no need to ever change it.
+#
+# Possible values:
+#
+# Any string.
+#
+# * Services which consume this:
+#
+# ``nova-cert``
+#
+# * Related options:
+#
+# None
+# (string value)
+#cert_topic = cert
+
+# Allow destination machine to match source for resize. Useful when testing in
+# single-host environments. (boolean value)
+#allow_resize_to_same_host = false
+
+# Availability zone to use when user doesn't specify one (string value)
+#default_schedule_zone = <None>
+
+# These are image properties which a snapshot should not inherit from an
+# instance (list value)
+#non_inheritable_image_properties = cache_in_nova,bittorrent
+
+# Kernel image that indicates not to use a kernel, but to use a raw disk image
+# instead (string value)
+#null_kernel = nokernel
+
+# When creating multiple instances with a single request using the os-multiple-
+# create API extension, this template will be used to build the display name
+# for each instance. The benefit is that the instances end up with different
+# hostnames. To restore legacy behavior of every instance having the same name,
+# set this option to "%(name)s". Valid keys for the template are: name, uuid,
+# count. (string value)
+#multi_instance_display_name_template = %(name)s-%(count)d
+
+# Maximum number of devices that will result in a local image being created on
+# the hypervisor node. A negative number means unlimited. Setting
+# max_local_block_devices to 0 means that any request that attempts to create a
+# local disk will fail. This option is meant to limit the number of local discs
+# (so root local disc that is the result of --image being used, and any other
+# ephemeral and swap disks). 0 does not mean that images will be automatically
+# converted to volumes and boot instances from volumes - it just means that all
+# requests that attempt to create a local disk will fail. (integer value)
+#max_local_block_devices = 3
+
+#
+# An alias for a PCI passthrough device requirement.
+#
+# This allows users to specify the alias in the extra_spec for a flavor,
+# without
+# needing to repeat all the PCI property requirements.
+#
+# Possible Values:
+#
+# * A list of JSON values which describe the aliases. For example:
+#
+# pci_alias = {
+# "name": "QuickAssist",
+# "product_id": "0443",
+# "vendor_id": "8086",
+# "device_type": "type-PCI"
+# }
+#
+# defines an alias for the Intel QuickAssist card. (multi valued). Valid key
+# values are :
+#
+# * "name"
+# * "product_id"
+# * "vendor_id"
+# * "device_type"
+#
+# Services which consume this:
+#
+# * nova-compute
+#
+# Related options:
+#
+# * None (multi valued)
+#pci_alias =
+
+#
+# White list of PCI devices available to VMs.
+#
+# Possible values:
+#
+# * A JSON dictionary which describe a whitelisted PCI device. It should take
+# the following format:
+#
+# ["device_id": "<id>",] ["product_id": "<id>",]
+# ["address": "[[[[<domain>]:]<bus>]:][<slot>][.[<function>]]" |
+# "devname": "PCI Device Name",]
+# {"tag": "<tag_value>",}
+#
+# where '[' indicates zero or one occurrences, '{' indicates zero or multiple
+# occurrences, and '|' mutually exclusive options. Note that any missing
+# fields are automatically wildcarded. Valid examples are:
+#
+# pci_passthrough_whitelist = {"devname":"eth0",
+# "physical_network":"physnet"}
+# pci_passthrough_whitelist = {"address":"*:0a:00.*"}
+# pci_passthrough_whitelist = {"address":":0a:00.",
+# "physical_network":"physnet1"}
+# pci_passthrough_whitelist = {"vendor_id":"1137",
+# "product_id":"0071"}
+# pci_passthrough_whitelist = {"vendor_id":"1137",
+# "product_id":"0071",
+# "address": "0000:0a:00.1",
+# "physical_network":"physnet1"}
+#
+# The following are invalid, as they specify mutually exclusive options:
+#
+# pci_passthrough_whitelist = {"devname":"eth0",
+# "physical_network":"physnet",
+# "address":"*:0a:00.*"}
+#
+# * A JSON list of JSON dictionaries corresponding to the above format. For
+# example:
+#
+# pci_passthrough_whitelist = [{"product_id":"0001", "vendor_id":"8086"},
+# {"product_id":"0002", "vendor_id":"8086"}]
+#
+# Services which consume this:
+#
+# * nova-compute
+#
+# Related options:
+#
+# * None (multi valued)
+#pci_passthrough_whitelist =
+
+#
+# New instances will be scheduled on a host chosen randomly from a subset of
+# the
+# N best hosts, where N is the value set by this option. Valid values are 1 or
+# greater. Any value less than one will be treated as 1.
+#
+# Setting this to a value greater than 1 will reduce the chance that multiple
+# scheduler processes handling similar requests will select the same host,
+# creating a potential race condition. By selecting a host randomly from the N
+# hosts that best fit the request, the chance of a conflict is reduced.
+# However,
+# the higher you set this value, the less optimal the chosen host may be for a
+# given request.
+#
+# This option is only used by the FilterScheduler and its subclasses; if you
+# use
+# a different scheduler, this option has no effect.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# None
+# (integer value)
+#scheduler_host_subset_size = 1
+
+#
+# This option specifies the filters used for filtering baremetal hosts. The
+# value
+# should be a list of strings, with each string being the name of a filter
+# class
+# to be used. When used, they will be applied in order, so place your most
+# restrictive filters first to make the filtering process more efficient.
+#
+# This option is only used by the FilterScheduler and its subclasses; if you
+# use
+# a different scheduler, this option has no effect.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# If the 'scheduler_use_baremetal_filters' option is False, this option has
+# no effect.
+# (list value)
+#baremetal_scheduler_default_filters = RetryFilter,AvailabilityZoneFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ExactRamFilter,ExactDiskFilter,ExactCoreFilter
+
+#
+# Set this to True to tell the nova scheduler that it should use the filters
+# specified in the 'baremetal_scheduler_default_filters' option. If you are not
+# scheduling baremetal nodes, leave this at the default setting of False.
+#
+# This option is only used by the FilterScheduler and its subclasses; if you
+# use
+# a different scheduler, this option has no effect.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# If this option is set to True, then the filters specified in the
+# 'baremetal_scheduler_default_filters' are used instead of the filters
+# specified in 'scheduler_default_filters'.
+# (boolean value)
+#scheduler_use_baremetal_filters = false
+
+#
+# This is an unordered list of the filter classes the Nova scheduler may apply.
+# Only the filters specified in the 'scheduler_default_filters' option will be
+# used, but any filter appearing in that option must also be included in this
+# list.
+#
+# By default, this is set to all filters that are included with Nova. If you
+# wish
+# to change this, replace this with a list of strings, where each element is
+# the
+# path to a filter.
+#
+# This option is only used by the FilterScheduler and its subclasses; if you
+# use
+# a different scheduler, this option has no effect.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# scheduler_default_filters
+# (multi valued)
+#scheduler_available_filters = nova.scheduler.filters.all_filters
+
+#
+# This option is the list of filter class names that will be used for filtering
+# hosts. The use of 'default' in the name of this option implies that other
+# filters may sometimes be used, but that is not the case. These filters will
+# be
+# applied in the order they are listed, so place your most restrictive filters
+# first to make the filtering process more efficient.
+#
+# This option is only used by the FilterScheduler and its subclasses; if you
+# use
+# a different scheduler, this option has no effect.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# All of the filters in this option *must* be present in the
+# 'scheduler_available_filters' option, or a SchedulerHostFilterNotFound
+# exception will be raised.
+# (list value)
+#scheduler_default_filters = RetryFilter,AvailabilityZoneFilter,RamFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter
+
+#
+# This is a list of weigher class names. Only hosts which pass the filters are
+# weighed. The weight for any host starts at 0, and the weighers order these
+# hosts by adding to or subtracting from the weight assigned by the previous
+# weigher. Weights may become negative.
+#
+# An instance will be scheduled to one of the N most-weighted hosts, where N is
+# 'scheduler_host_subset_size'.
+#
+# By default, this is set to all weighers that are included with Nova. If you
+# wish to change this, replace this with a list of strings, where each element
+# is
+# the path to a weigher.
+#
+# This option is only used by the FilterScheduler and its subclasses; if you
+# use
+# a different scheduler, this option has no effect.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# None
+# (list value)
+#scheduler_weight_classes = nova.scheduler.weights.all_weighers
+
+#
+# The scheduler may need information about the instances on a host in order to
+# evaluate its filters and weighers. The most common need for this information
+# is
+# for the (anti-)affinity filters, which need to choose a host based on the
+# instances already running on a host.
+#
+# If the configured filters and weighers do not need this information,
+# disabling
+# this option will improve performance. It may also be disabled when the
+# tracking
+# overhead proves too heavy, although this will cause classes requiring host
+# usage data to query the database on each request instead.
+#
+# This option is only used by the FilterScheduler and its subclasses; if you
+# use
+# a different scheduler, this option has no effect.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# None
+# (boolean value)
+#scheduler_tracks_instance_changes = true
+
+#
+# This is the message queue topic that the scheduler 'listens' on. It is used
+# when the scheduler service is started up to configure the queue, and whenever
+# an RPC call to the scheduler is made. There is almost never any reason to
+# ever
+# change this value.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# None
+# (string value)
+#scheduler_topic = scheduler
+
+#
+# The scheduler host manager to use, which manages the in-memory picture of the
+# hosts that the scheduler uses.
+#
+# The option value should be chosen from one of the entrypoints under the
+# namespace 'nova.scheduler.host_manager' of file 'setup.cfg'. For example,
+# 'host_manager' is the default setting. Aside from the default, the only other
+# option as of the Mitaka release is 'ironic_host_manager', which should be
+# used
+# if you're using Ironic to provision bare-metal instances.
+#
+# This option also supports a full class path style, for example
+# "nova.scheduler.host_manager.HostManager", but note this support is
+# deprecated
+# and will be dropped in the N release.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# None
+# (string value)
+#scheduler_host_manager = host_manager
+
+#
+# The class of the driver used by the scheduler. This should be chosen from one
+# of the entrypoints under the namespace 'nova.scheduler.driver' of file
+# 'setup.cfg'. If nothing is specified in this option, the 'filter_scheduler'
+# is
+# used.
+#
+# This option also supports deprecated full Python path to the class to be
+# used.
+# For example, "nova.scheduler.filter_scheduler.FilterScheduler". But note:
+# this
+# support will be dropped in the N Release.
+#
+# Other options are:
+#
+# * 'caching_scheduler' which aggressively caches the system state for
+# better
+# individual scheduler performance at the risk of more retries when running
+# multiple schedulers.
+#
+# * 'chance_scheduler' which simply picks a host at random.
+#
+# * 'fake_scheduler' which is used for testing.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# None
+# (string value)
+#scheduler_driver = filter_scheduler
+
+#
+# This value controls how often (in seconds) to run periodic tasks in the
+# scheduler. The specific tasks that are run for each period are determined by
+# the particular scheduler being used.
+#
+# If this is larger than the nova-service 'service_down_time' setting, Nova may
+# report the scheduler service as down. This is because the scheduler driver is
+# responsible for sending a heartbeat and it will only do that as often as this
+# option allows. As each scheduler can work a little differently than the
+# others,
+# be sure to test this with your selected scheduler.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# ``nova-service service_down_time``
+# (integer value)
+#scheduler_driver_task_period = 60
+
+#
+# The absolute path to the scheduler configuration JSON file, if any. This file
+# location is monitored by the scheduler for changes and reloads it if needed.
+# It
+# is converted from JSON to a Python data structure, and passed into the
+# filtering and weighing functions of the scheduler, which can use it for
+# dynamic
+# configuration.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# None
+# (string value)
+#scheduler_json_config_location =
+
+#
+# If there is a need to restrict some images to only run on certain designated
+# hosts, list those image UUIDs here.
+#
+# This option is only used by the FilterScheduler and its subclasses; if you
+# use
+# a different scheduler, this option has no effect. Also note that this setting
+# only affects scheduling if the 'IsolatedHostsFilter' filter is enabled.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# scheduler/isolated_hosts
+# scheduler/restrict_isolated_hosts_to_isolated_images
+# (list value)
+#isolated_images =
+
+#
+# If there is a need to restrict some images to only run on certain designated
+# hosts, list those host names here.
+#
+# This option is only used by the FilterScheduler and its subclasses; if you
+# use
+# a different scheduler, this option has no effect. Also note that this setting
+# only affects scheduling if the 'IsolatedHostsFilter' filter is enabled.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# scheduler/isolated_images
+# scheduler/restrict_isolated_hosts_to_isolated_images
+# (list value)
+#isolated_hosts =
+
+#
+# This setting determines if the scheduler's isolated_hosts filter will allow
+# non-isolated images on a host designated as an isolated host. When set to
+# True
+# (the default), non-isolated images will not be allowed to be built on
+# isolated
+# hosts. When False, non-isolated images can be built on both isolated and
+# non-isolated hosts alike.
+#
+# This option is only used by the FilterScheduler and its subclasses; if you
+# use
+# a different scheduler, this option has no effect. Also note that this setting
+# only affects scheduling if the 'IsolatedHostsFilter' filter is enabled. Even
+# then, this option doesn't affect the behavior of requests for isolated
+# images,
+# which will *always* be restricted to isolated hosts.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# scheduler/isolated_images
+# scheduler/isolated_hosts
+# (boolean value)
+#restrict_isolated_hosts_to_isolated_images = true
+
+#
+# This setting caps the number of instances on a host that can be actively
+# performing IO (in a build, resize, snapshot, migrate, rescue, or unshelve
+# task
+# state) before that host becomes ineligible to build new instances.
+#
+# Valid values are positive integers: 1 or greater.
+#
+# This option is only used by the FilterScheduler and its subclasses; if you
+# use
+# a different scheduler, this option has no effect. Also note that this setting
+# only affects scheduling if the 'io_ops_filter' filter is enabled.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# None
+# (integer value)
+#max_io_ops_per_host = 8
+
+#
+# Images and hosts can be configured so that certain images can only be
+# scheduled
+# to hosts in a particular aggregate. This is done with metadata values set on
+# the host aggregate that are identified by beginning with the value of this
+# option. If the host is part of an aggregate with such a metadata key, the
+# image
+# in the request spec must have the value of that metadata in its properties in
+# order for the scheduler to consider the host as acceptable.
+#
+# Valid values are strings.
+#
+# This option is only used by the FilterScheduler and its subclasses; if you
+# use
+# a different scheduler, this option has no effect. Also note that this setting
+# only affects scheduling if the 'aggregate_image_properties_isolation' filter
+# is
+# enabled.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# aggregate_image_properties_isolation_separator
+# (string value)
+#aggregate_image_properties_isolation_namespace = <None>
+
+#
+# When using the aggregate_image_properties_isolation filter, the relevant
+# metadata keys are prefixed with the namespace defined in the
+# aggregate_image_properties_isolation_namespace configuration option plus a
+# separator. This option defines the separator to be used. It defaults to a
+# period ('.').
+#
+# Valid values are strings.
+#
+# This option is only used by the FilterScheduler and its subclasses; if you
+# use
+# a different scheduler, this option has no effect. Also note that this setting
+# only affects scheduling if the 'aggregate_image_properties_isolation' filter
+# is
+# enabled.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# aggregate_image_properties_isolation_namespace
+# (string value)
+#aggregate_image_properties_isolation_separator = .
+
+#
+# If you need to limit the number of instances on any given host, set this
+# option
+# to the maximum number of instances you want to allow. The
+# num_instances_filter
+# will reject any host that has at least as many instances as this option's
+# value.
+#
+# Valid values are positive integers; setting it to zero will cause all hosts
+# to
+# be rejected if the num_instances_filter is active.
+#
+# This option is only used by the FilterScheduler and its subclasses; if you
+# use
+# a different scheduler, this option has no effect. Also note that this setting
+# only affects scheduling if the 'num_instances_filter' filter is enabled.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# None
+# (integer value)
+#max_instances_per_host = 50
+
+#
+# This option determines how hosts with more or less available RAM are weighed.
+# A
+# positive value will result in the scheduler preferring hosts with more
+# available RAM, and a negative number will result in the scheduler preferring
+# hosts with less available RAM. Another way to look at it is that positive
+# values for this option will tend to spread instances across many hosts, while
+# negative values will tend to fill up (stack) hosts as much as possible before
+# scheduling to a less-used host. The absolute value, whether positive or
+# negative, controls how strong the RAM weigher is relative to other weighers.
+#
+# This option is only used by the FilterScheduler and its subclasses; if you
+# use
+# a different scheduler, this option has no effect. Also note that this setting
+# only affects scheduling if the 'ram' weigher is enabled.
+#
+# Valid values are numeric, either integer or float.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# None
+# (floating point value)
+#ram_weight_multiplier = 1.0
+
+# Multiplier used for weighing free disk space. Negative numbers mean to stack
+# vs spread. (floating point value)
+#disk_weight_multiplier = 1.0
+
+#
+# This option determines how hosts with differing workloads are weighed.
+# Negative
+# values, such as the default, will result in the scheduler preferring hosts
+# with
+# lighter workloads whereas positive values will prefer hosts with heavier
+# workloads. Another way to look at it is that positive values for this option
+# will tend to schedule instances onto hosts that are already busy, while
+# negative values will tend to distribute the workload across more hosts. The
+# absolute value, whether positive or negative, controls how strong the io_ops
+# weigher is relative to other weighers.
+#
+# This option is only used by the FilterScheduler and its subclasses; if you
+# use
+# a different scheduler, this option has no effect. Also note that this setting
+# only affects scheduling if the 'io_ops' weigher is enabled.
+#
+# Valid values are numeric, either integer or float.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# None
+# (floating point value)
+#io_ops_weight_multiplier = -1.0
+
+#
+# This is the maximum number of attempts that will be made to schedule an
+# instance before it is assumed that the failures aren't due to normal
+# occasional
+# race conflicts, but rather some other problem. When this is reached a
+# MaxRetriesExceeded exception is raised, and the instance is set to an error
+# state.
+#
+# Valid values are positive integers (1 or greater).
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# None
+# (integer value)
+#scheduler_max_attempts = 3
+
+# Multiplier used for weighing hosts for group soft-affinity. Only a positive
+# value is meaningful. Negative means that the behavior will change to the
+# opposite, which is soft-anti-affinity. (floating point value)
+#soft_affinity_weight_multiplier = 1.0
+
+# Multiplier used for weighing hosts for group soft-anti-affinity. Only a
+# positive value is meaningful. Negative means that the behavior will change to
+# the opposite, which is soft-affinity. (floating point value)
+#soft_anti_affinity_weight_multiplier = 1.0
+
+# Defines which physical CPUs (pCPUs) can be used by instance
+# virtual CPUs (vCPUs).
+#
+# Possible values:
+#
+# * A comma-separated list of physical CPU numbers that virtual CPUs can be
+# allocated to by default. Each element should be either a single CPU number,
+# a range of CPU numbers, or a caret followed by a CPU number to be
+# excluded from a previous range. For example:
+#
+# vcpu_pin_set = "4-12,^8,15"
+#
+# Services which consume this:
+#
+# * ``nova-scheduler``
+# * ``nova-compute``
+#
+# Interdependencies to other options:
+#
+# * None
+# (string value)
+#vcpu_pin_set = <None>
+
+# Defines which driver to use for controlling virtualization.
+#
+# Possible values:
+#
+# * ``libvirt.LibvirtDriver``
+# * ``xenapi.XenAPIDriver``
+# * ``fake.FakeDriver``
+# * ``ironic.IronicDriver``
+# * ``vmwareapi.VMwareVCDriver``
+# * ``hyperv.HyperVDriver``
+# * ``solariszones.SolarisZonesDriver``
+#
+# Services which consume this:
+#
+# * ``nova-compute``
+#
+# Interdependencies to other options:
+#
+# * None
+# (string value)
+compute_driver = solariszones.SolarisZonesDriver
+
+# The default format an ephemeral_volume will be formatted
+# with on creation.
+#
+# Possible values:
+#
+# * ``ext2``
+# * ``ext3``
+# * ``ext4``
+# * ``xfs``
+# * ``ntfs`` (only for Windows guests)
+#
+# Services which consume this:
+#
+# * ``nova-compute``
+#
+# Interdependencies to other options:
+#
+# * None
+# (string value)
+#default_ephemeral_format = <None>
+
+# The image preallocation mode to use. Image preallocation allows
+# storage for instance images to be allocated up front when the instance is
+# initially provisioned. This ensures immediate feedback is given if enough
+# space isn't available. In addition, it should significantly improve
+# performance on writes to new blocks and may even improve I/O performance to
+# prewritten blocks due to reduced fragmentation.
+#
+# Possible values:
+#
+# * "none" => no storage provisioning is done up front
+# * "space" => storage is fully allocated at instance start
+#
+# Services which consume this:
+#
+# * ``nova-compute``
+#
+# Interdependencies to other options:
+#
+# * None
+# (string value)
+# Allowed values: none, space
+#preallocate_images = none
+
+# Enable use of copy-on-write (cow) images.
+#
+# QEMU/KVM allow the use of qcow2 as backing files. By disabling this,
+# backing files will not be used.
+#
+# Possible values:
+#
+# * True: Enable use of cow images
+# * False: Disable use of cow images
+#
+# Services which consume this:
+#
+# * ``nova-compute``
+#
+# Interdependencies to other options:
+#
+# * None
+# (boolean value)
+#use_cow_images = true
+
+# Determine if instance should boot or fail on VIF plugging timeout.
+#
+# Nova sends a port update to Neutron after an instance has been scheduled,
+# providing Neutron with the necessary information to finish setup of the port.
+# Once completed, Neutron notifies Nova that it has finished setting up the
+# port, at which point Nova resumes the boot of the instance since network
+# connectivity is now supposed to be present. A timeout will occur if the reply
+# is not received after a given interval.
+#
+# This option determines what Nova does when the VIF plugging timeout event
+# happens. When enabled, the instance will error out. When disabled, the
+# instance will continue to boot on the assumption that the port is ready.
+#
+# Possible values:
+#
+# * True: Instances should fail after VIF plugging timeout
+# * False: Instances should continue booting after VIF plugging timeout
+#
+# Services which consume this:
+#
+# * ``nova-compute``
+#
+# Interdependencies to other options:
+#
+# * None
+# (boolean value)
+#vif_plugging_is_fatal = true
+
+# Timeout for Neutron VIF plugging event message arrival.
+#
+# Number of seconds to wait for Neutron vif plugging events to
+# arrive before continuing or failing (see 'vif_plugging_is_fatal'). If this is
+# set to zero and 'vif_plugging_is_fatal' is False, events should not be
+# expected to arrive at all.
+#
+# Possible values:
+#
+# * A time interval in seconds
+#
+# Services which consume this:
+#
+# * ``nova-compute``
+#
+# Interdependencies to other options:
+#
+# * None
+# (integer value)
+#vif_plugging_timeout = 300
+
+# Firewall driver to use with ``nova-network`` service.
+#
+# This option only applies when using the ``nova-network`` service. When using
+# another networking services, such as Neutron, this should be to set to the
+# ``NoopFirewallDriver``.
+#
+# If unset (the default), this will default to the hypervisor-specified
+# default driver.
+#
+# Possible values:
+#
+# * nova.virt.firewall.IptablesFirewallDriver
+# * nova.virt.firewall.NoopFirewallDriver
+# * nova.virt.libvirt.firewall.IptablesFirewallDriver
+# * [...]
+#
+# Services which consume this:
+#
+# * nova-network
+#
+# Interdependencies to other options:
+#
+# * ``use_neutron``: This must be set to ``False`` to enable ``nova-network``
+# networking
+# (string value)
+#firewall_driver = <None>
+
+# Determine whether to allow network traffic from same network.
+#
+# When set to true, hosts on the same subnet are not filtered and are allowed
+# to pass all types of traffic between them. On a flat network, this allows
+# all instances from all projects unfiltered communication. With VLAN
+# networking, this allows access between instances within the same project.
+#
+# This option only applies when using the ``nova-network`` service. When using
+# another networking services, such as Neutron, security groups or other
+# approaches should be used.
+#
+# Possible values:
+#
+# * True: Network traffic should be allowed pass between all instances on the
+# same network, regardless of their tenant and security policies
+# * False: Network traffic should not be allowed pass between instances unless
+# it is unblocked in a security group
+#
+# Services which consume this:
+#
+# * nova-network
+#
+# Interdependencies to other options:
+#
+# * ``use_neutron``: This must be set to ``False`` to enable ``nova-network``
+# networking
+# * ``firewall_driver``: This must be set to
+# ``nova.virt.libvirt.firewall.IptablesFirewallDriver`` to ensure the
+# libvirt firewall driver is enabled.
+# (boolean value)
+#allow_same_net_traffic = true
+
+# Force conversion of backing images to raw format.
+#
+# Possible values:
+#
+# * True: Backing image files will be converted to raw image format
+# * False: Backing image files will not be converted
+#
+# Services which consume this:
+#
+# * nova-compute
+#
+# Interdependencies to other options:
+#
+# * ``compute_driver``: Only the libvirt driver uses this option.
+# (boolean value)
+#force_raw_images = true
+
+# Template file for injected network (string value)
+#injected_network_template = $pybasedir/nova/virt/interfaces.template
+
+# Name of the mkfs commands for ephemeral device. The format is <os_type>=<mkfs
+# command> (multi valued)
+#virt_mkfs =
+
+# Attempt to resize the filesystem by accessing the image over a block device.
+# This is done by the host and may not be necessary if the image contains a
+# recent version of cloud-init. Possible mechanisms require the nbd driver (for
+# qcow and raw), or loop (for raw). (boolean value)
+#resize_fs_using_block_device = false
+
+# Amount of time, in seconds, to wait for NBD device start up. (integer value)
+#timeout_nbd = 10
+
+# File name for the paste.deploy config for nova-api (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 be formatted 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
+
+# The HTTP header used to determine the scheme for the original request, even
+# if it was removed by an SSL terminating proxy. Typical value is
+# "HTTP_X_FORWARDED_PROTO". (string value)
+#secure_proxy_ssl_header = <None>
+
+# CA certificate file to use to verify connecting clients (string value)
+#ssl_ca_file = <None>
+
+# SSL certificate of API server (string value)
+#ssl_cert_file = <None>
+
+# SSL private key of API server (string value)
+#ssl_key_file = <None>
+
+# 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)
+#wsgi_default_pool_size = 1000
+
+# Maximum line size of message headers to be accepted. max_header_line may need
+# to be increased when using large tokens (typically those generated by the
+# Keystone v3 API 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
+
+#
+# From nova.network
+#
+
+# DEPRECATED: The full class name of the network API class to use.
+# ``use_neutron`` should be used instead. (string value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#network_api_class = nova.network.api.API
+
+#
+# Whether to use Neutron or Nova Network as the back end for networking.
+# Defaults to False (indicating Nova network). Set to True to use neutron.
+# (boolean value)
+use_neutron = true
# Driver to use for network creation (string value)
-network_driver=nova.network.solaris_net
-
-
-#
-# Options defined in nova.network.floating_ips
-#
+network_driver = nova.network.solaris_net
# Default pool for floating IPs (string value)
-#default_floating_pool=nova
+#default_floating_pool = nova
# Autoassigning floating IP to VM (boolean value)
-#auto_assign_floating_ip=false
-
-# Full class name for the DNS Manager for floating IPs (string
-# value)
-#floating_ip_dns_manager=nova.network.noop_dns_driver.NoopDNSDriver
-
-# Full class name for the DNS Manager for instance IPs (string
-# value)
-#instance_dns_manager=nova.network.noop_dns_driver.NoopDNSDriver
-
-# Full class name for the DNS Zone for instance IPs (string
-# value)
-#instance_dns_domain=
-
-
-#
-# Options defined in nova.network.ldapdns
-#
-
-# URL for LDAP server which will store DNS entries (string
-# value)
-#ldap_dns_url=ldap://ldap.example.com:389
+#auto_assign_floating_ip = false
+
+# Full class name for the DNS Manager for floating IPs (string value)
+#floating_ip_dns_manager = nova.network.noop_dns_driver.NoopDNSDriver
+
+# Full class name for the DNS Manager for instance IPs (string value)
+#instance_dns_manager = nova.network.noop_dns_driver.NoopDNSDriver
+
+# Full class name for the DNS Zone for instance IPs (string value)
+#instance_dns_domain =
+
+# URL for LDAP server which will store DNS entries (string value)
+#ldap_dns_url = ldap://ldap.example.com:389
# User for LDAP DNS (string value)
-#ldap_dns_user=uid=admin,ou=people,dc=example,dc=org
+#ldap_dns_user = uid=admin,ou=people,dc=example,dc=org
# Password for LDAP DNS (string value)
-#ldap_dns_password=password
-
-# Hostmaster for LDAP DNS driver Statement of Authority
-# (string value)
-#[email protected]
+#ldap_dns_password = password
+
+# Hostmaster for LDAP DNS driver Statement of Authority (string value)
+#ldap_dns_soa_hostmaster = [email protected]
# DNS Servers for LDAP DNS driver (multi valued)
-#ldap_dns_servers=dns.example.org
+#ldap_dns_servers = dns.example.org
# Base DN for DNS entries in LDAP (string value)
-#ldap_dns_base_dn=ou=hosts,dc=example,dc=org
-
-# Refresh interval (in seconds) for LDAP DNS driver Statement
-# of Authority (string value)
-#ldap_dns_soa_refresh=1800
-
-# Retry interval (in seconds) for LDAP DNS driver Statement of
-# Authority (string value)
-#ldap_dns_soa_retry=3600
-
-# Expiry interval (in seconds) for LDAP DNS driver Statement
-# of Authority (string value)
-#ldap_dns_soa_expiry=86400
-
-# Minimum interval (in seconds) for LDAP DNS driver Statement
-# of Authority (string value)
-#ldap_dns_soa_minimum=7200
-
-
-#
-# Options defined in nova.network.linux_net
-#
+#ldap_dns_base_dn = ou=hosts,dc=example,dc=org
+
+# Refresh interval (in seconds) for LDAP DNS driver Statement of Authority
+# (string value)
+#ldap_dns_soa_refresh = 1800
+
+# Retry interval (in seconds) for LDAP DNS driver Statement of Authority
+# (string value)
+#ldap_dns_soa_retry = 3600
+
+# Expiry interval (in seconds) for LDAP DNS driver Statement of Authority
+# (string value)
+#ldap_dns_soa_expiry = 86400
+
+# Minimum interval (in seconds) for LDAP DNS driver Statement of Authority
+# (string value)
+#ldap_dns_soa_minimum = 7200
# Location of flagfiles for dhcpbridge (multi valued)
-#dhcpbridge_flagfile=/etc/nova/nova-dhcpbridge.conf
+#dhcpbridge_flagfile = /etc/nova/nova-dhcpbridge.conf
# Location to keep network config files (string value)
-#networks_path=$state_path/networks
+#networks_path = $state_path/networks
# Interface for public IP addresses (string value)
-#public_interface=eth0
+#public_interface = eth0
# Location of nova-dhcpbridge (string value)
-#dhcpbridge=$bindir/nova-dhcpbridge
+#dhcpbridge = $bindir/nova-dhcpbridge
# Public IP of network host (string value)
-#routing_source_ip=$my_ip
+#routing_source_ip = $my_ip
# Lifetime of a DHCP lease in seconds (integer value)
-#dhcp_lease_time=86400
-
-# If set, uses specific DNS server for dnsmasq. Can be
-# specified multiple times. (multi valued)
-#dns_server=
-
-# If set, uses the dns1 and dns2 from the network ref. as dns
-# servers. (boolean value)
-#use_network_dns_servers=false
+#dhcp_lease_time = 86400
+
+# If set, uses specific DNS server for dnsmasq. Can be specified multiple
+# times. (multi valued)
+#dns_server =
+
+# If set, uses the dns1 and dns2 from the network ref. as dns servers. (boolean
+# value)
+#use_network_dns_servers = false
# A list of dmz ranges that should be accepted (list value)
-#dmz_cidr=
-
-# Traffic to this range will always be snatted to the fallback
-# ip, even if it would normally be bridged out of the node.
-# Can be specified multiple times. (multi valued)
-#force_snat_range=
-
-# Override the default dnsmasq settings with this file (string
-# value)
-#dnsmasq_config_file=
+#dmz_cidr =
+
+# Traffic to this range will always be snatted to the fallback IP, even if it
+# would normally be bridged out of the node. Can be specified multiple times.
+# (multi valued)
+#force_snat_range =
+
+# Override the default dnsmasq settings with this file (string value)
+#dnsmasq_config_file =
# Driver used to create ethernet devices. (string value)
-#linuxnet_interface_driver=nova.network.linux_net.LinuxBridgeInterfaceDriver
-
-# Name of Open vSwitch bridge used with linuxnet (string
-# value)
-#linuxnet_ovs_integration_bridge=br-int
+#linuxnet_interface_driver = nova.network.linux_net.LinuxBridgeInterfaceDriver
+
+# Name of Open vSwitch bridge used with linuxnet (string value)
+#linuxnet_ovs_integration_bridge = br-int
# Send gratuitous ARPs for HA setup (boolean value)
-#send_arp_for_ha=false
+#send_arp_for_ha = false
# Send this many gratuitous ARPs for HA setup (integer value)
-#send_arp_for_ha_count=3
-
-# Use single default gateway. Only first nic of vm will get
-# default gateway from dhcp server (boolean value)
-#use_single_default_gateway=false
-
-# An interface that bridges can forward to. If this is set to
-# all then all traffic will be forwarded. Can be specified
-# multiple times. (multi valued)
-#forward_bridge_interface=all
+#send_arp_for_ha_count = 3
+
+# Use single default gateway. Only first nic of vm will get default gateway
+# from dhcp server (boolean value)
+#use_single_default_gateway = false
+
+# An interface that bridges can forward to. If this is set to all then all
+# traffic will be forwarded. Can be specified multiple times. (multi valued)
+#forward_bridge_interface = all
# The IP address for the metadata API server (string value)
-#metadata_host=$my_ip
+#metadata_host = $my_ip
# The port for the metadata API port (integer value)
-#metadata_port=8775
-
-# Regular expression to match the iptables rule that should
-# always be on the top. (string value)
-#iptables_top_regex=
-
-# Regular expression to match the iptables rule that should
-# always be on the bottom. (string value)
-#iptables_bottom_regex=
-
-# The table that iptables to jump to when a packet is to be
-# dropped. (string value)
-#iptables_drop_action=DROP
-
-# Amount of time, in seconds, that ovs_vsctl should wait for a
-# response from the database. 0 is to wait forever. (integer
+# Minimum value: 1
+# Maximum value: 65535
+#metadata_port = 8775
+
+# Regular expression to match the iptables rule that should always be on the
+# top. (string value)
+#iptables_top_regex =
+
+# Regular expression to match the iptables rule that should always be on the
+# bottom. (string value)
+#iptables_bottom_regex =
+
+# The table that iptables to jump to when a packet is to be dropped. (string
# value)
-#ovs_vsctl_timeout=120
-
-# If passed, use fake network devices and addresses (boolean
-# value)
-#fake_network=false
-
-# Number of times to retry ebtables commands on failure.
-# (integer value)
-#ebtables_exec_attempts=3
-
-# Number of seconds to wait between ebtables retries.
-# (floating point value)
-#ebtables_retry_interval=1.0
-
-
-#
-# Options defined in nova.network.manager
-#
+#iptables_drop_action = DROP
+
+# Amount of time, in seconds, that ovs_vsctl should wait for a response from
+# the database. 0 is to wait forever. (integer value)
+#ovs_vsctl_timeout = 120
+
+# If passed, use fake network devices and addresses (boolean value)
+#fake_network = false
+
+# Number of times to retry ebtables commands on failure. (integer value)
+#ebtables_exec_attempts = 3
+
+# Number of seconds to wait between ebtables retries. (floating point value)
+#ebtables_retry_interval = 1.0
# Bridge for simple network instances (string value)
-#flat_network_bridge=<None>
+#flat_network_bridge = <None>
# DNS server for simple network (string value)
-#flat_network_dns=8.8.4.4
-
-# Whether to attempt to inject network setup into guest
-# (boolean value)
-#flat_injected=false
-
-# FlatDhcp will bridge into this interface if set (string
-# value)
-#flat_interface=<None>
+#flat_network_dns = 8.8.4.4
+
+# Whether to attempt to inject network setup into guest (boolean value)
+#flat_injected = false
+
+# FlatDhcp will bridge into this interface if set (string value)
+#flat_interface = <None>
# First VLAN for private networks (integer value)
-#vlan_start=100
+# Minimum value: 1
+# Maximum value: 4094
+#vlan_start = 100
# VLANs will bridge into this interface if set (string value)
-#vlan_interface=<None>
+#vlan_interface = <None>
# Number of networks to support (integer value)
-#num_networks=1
+#num_networks = 1
# Public IP for the cloudpipe VPN servers (string value)
-#vpn_ip=$my_ip
+#vpn_ip = $my_ip
# First Vpn port for private networks (integer value)
-#vpn_start=1000
+#vpn_start = 1000
# Number of addresses in each private subnet (integer value)
-#network_size=256
+#network_size = 256
# Fixed IPv6 address block (string value)
-#fixed_range_v6=fd00::/48
+#fixed_range_v6 = fd00::/48
# Default IPv4 gateway (string value)
-#gateway=<None>
+#gateway = <None>
# Default IPv6 gateway (string value)
-#gateway_v6=<None>
+#gateway_v6 = <None>
# Number of addresses reserved for vpn clients (integer value)
-#cnt_vpn_clients=0
-
-# Seconds after which a deallocated IP is disassociated
-# (integer value)
-#fixed_ip_disassociate_timeout=600
-
-# Number of attempts to create unique mac address (integer
-# value)
-#create_unique_mac_address_attempts=5
-
-# If True, skip using the queue and make local calls (boolean
+#cnt_vpn_clients = 0
+
+# Seconds after which a deallocated IP is disassociated (integer value)
+#fixed_ip_disassociate_timeout = 600
+
+# Number of attempts to create unique mac address (integer value)
+#create_unique_mac_address_attempts = 5
+
+# If True, skip using the queue and make local calls (boolean value)
+#fake_call = false
+
+# If True, unused gateway devices (VLAN and bridge) are deleted in VLAN network
+# mode with multi hosted networks (boolean value)
+#teardown_unused_network_gateway = false
+
+# If True, send a dhcp release on instance termination (boolean value)
+#force_dhcp_release = true
+
+# If True, when a DNS entry must be updated, it sends a fanout cast to all
+# network hosts to update their DNS entries in multi host mode (boolean value)
+#update_dns_entries = false
+
+# Number of seconds to wait between runs of updates to DNS entries. (integer
# value)
-#fake_call=false
-
-# If True, unused gateway devices (VLAN and bridge) are
-# deleted in VLAN network mode with multi hosted networks
-# (boolean value)
-#teardown_unused_network_gateway=false
-
-# If True, send a dhcp release on instance termination
-# (boolean value)
-#force_dhcp_release=true
-
-# If True, when a DNS entry must be updated, it sends a fanout
-# cast to all network hosts to update their DNS entries in
-# multi host mode (boolean value)
-#update_dns_entries=false
-
-# Number of seconds to wait between runs of updates to DNS
-# entries. (integer value)
-#dns_update_periodic_interval=-1
+#dns_update_periodic_interval = -1
# Domain to use for building the hostnames (string value)
-#dhcp_domain=novalocal
+#dhcp_domain = novalocal
# Indicates underlying L3 management library (string value)
-#l3_lib=nova.network.l3.LinuxNetL3
-
-
-#
-# Options defined in nova.network.rpcapi
-#
+#l3_lib = nova.network.l3.LinuxNetL3
# The topic network nodes listen on (string value)
-#network_topic=network
-
-# Default value for multi_host in networks. Also, if set, some
-# rpc network calls will be sent directly to host. (boolean
-# value)
-#multi_host=false
-
-
-#
-# Options defined in nova.network.security_group.openstack_driver
-#
-
-# The full class name of the security API class (string value)
-#security_group_api=nova
-
-
-#
-# Options defined in nova.objects.network
-#
-
-# DEPRECATED: THIS VALUE SHOULD BE SET WHEN CREATING THE
-# NETWORK. If True in multi_host mode, all compute hosts share
-# the same dhcp address. The same IP address used for DHCP
-# will be added on each nova-network node which is only
-# visible to the vms on the same host. (boolean value)
-#share_dhcp_address=false
-
-# DEPRECATED: THIS VALUE SHOULD BE SET WHEN CREATING THE
-# NETWORK. MTU setting for network interface. (integer value)
-#network_device_mtu=<None>
-
-
-#
-# Options defined in nova.objectstore.s3server
-#
-
-# Path to S3 buckets (string value)
-#buckets_path=$state_path/buckets
-
-# IP address for S3 API to listen (string value)
-#s3_listen=0.0.0.0
-
-# Port for S3 API to listen (integer value)
-#s3_listen_port=3333
-
-
-#
-# Options defined in nova.pci.request
-#
-
-# An alias for a PCI passthrough device requirement. This
-# allows users to specify the alias in the extra_spec for a
-# flavor, without needing to repeat all the PCI property
-# requirements. For example: pci_alias = { "name":
-# "QuicAssist", "product_id": "0443", "vendor_id": "8086",
-# "device_type": "ACCEL" } defines an alias for the Intel
-# QuickAssist card. (multi valued) (multi valued)
-#pci_alias=
-
-
-#
-# Options defined in nova.pci.whitelist
-#
-
-# White list of PCI devices available to VMs. For example:
-# pci_passthrough_whitelist = [{"vendor_id": "8086",
-# "product_id": "0443"}] (multi valued)
-#pci_passthrough_whitelist=
-
-
-#
-# Options defined in nova.scheduler.driver
-#
-
-# The scheduler host manager class to use (string value)
-#scheduler_host_manager=nova.scheduler.host_manager.HostManager
-
-
-#
-# Options defined in nova.scheduler.filter_scheduler
-#
-
-# New instances will be scheduled on a host chosen randomly
-# from a subset of the N best hosts. This property defines the
-# subset size that a host is chosen from. A value of 1 chooses
-# the first host returned by the weighing functions. This
-# value must be at least 1. Any value less than 1 will be
-# ignored, and 1 will be used instead (integer value)
-#scheduler_host_subset_size=1
-
-
-#
-# Options defined in nova.scheduler.filters.aggregate_image_properties_isolation
-#
-
-# Force the filter to consider only keys matching the given
-# namespace. (string value)
-#aggregate_image_properties_isolation_namespace=<None>
-
-# The separator used between the namespace and keys (string
-# value)
-#aggregate_image_properties_isolation_separator=.
-
-
-#
-# Options defined in nova.scheduler.filters.core_filter
-#
-
-# Virtual CPU to physical CPU allocation ratio which affects
-# all CPU filters. This configuration specifies a global ratio
-# for CoreFilter. For AggregateCoreFilter, it will fall back
-# to this configuration value if no per-aggregate setting
-# found. (floating point value)
-#cpu_allocation_ratio=16.0
-
-
-#
-# Options defined in nova.scheduler.filters.disk_filter
-#
-
-# Virtual disk to physical disk allocation ratio (floating
-# point value)
-#disk_allocation_ratio=1.0
-
-
-#
-# Options defined in nova.scheduler.filters.io_ops_filter
-#
-
-# Tells filters to ignore hosts that have this many or more
-# instances currently in build, resize, snapshot, migrate,
-# rescue or unshelve task states (integer value)
-#max_io_ops_per_host=8
-
-
-#
-# Options defined in nova.scheduler.filters.isolated_hosts_filter
-#
-
-# Images to run on isolated host (list value)
-#isolated_images=
-
-# Host reserved for specific images (list value)
-#isolated_hosts=
-
-# Whether to force isolated hosts to run only isolated images
-# (boolean value)
-#restrict_isolated_hosts_to_isolated_images=true
-
-
-#
-# Options defined in nova.scheduler.filters.num_instances_filter
-#
-
-# Ignore hosts that have too many instances (integer value)
-#max_instances_per_host=50
-
-
-#
-# Options defined in nova.scheduler.filters.ram_filter
-#
-
-# Virtual ram to physical ram allocation ratio which affects
-# all ram filters. This configuration specifies a global ratio
-# for RamFilter. For AggregateRamFilter, it will fall back to
-# this configuration value if no per-aggregate setting found.
-# (floating point value)
-#ram_allocation_ratio=1.5
-
-
-#
-# Options defined in nova.scheduler.host_manager
-#
-
-# Filter classes available to the scheduler which may be
-# specified more than once. An entry of
-# "nova.scheduler.filters.all_filters" maps to all filters
-# included with nova. (multi valued)
-#scheduler_available_filters=nova.scheduler.filters.all_filters
-
-# Which filter class names to use for filtering hosts when not
-# specified in the request. (list value)
-#scheduler_default_filters=RetryFilter,AvailabilityZoneFilter,RamFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter
-
-# Which weight class names to use for weighing hosts (list
+#network_topic = network
+
+# Default value for multi_host in networks. Also, if set, some rpc network
+# calls will be sent directly to host. (boolean value)
+#multi_host = false
+
+# DEPRECATED: The full class name of the security API class (string value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#security_group_api = nova
+
+#
+# From nova.virt
+#
+
+# Config drive format. (string value)
+# Allowed values: iso9660, vfat
+#config_drive_format = iso9660
+
+# Force injection to take place on a config drive (boolean value)
+#force_config_drive = false
+
+# Name and optionally path of the tool used for ISO image creation (string
# value)
-#scheduler_weight_classes=nova.scheduler.weights.all_weighers
-
-# Determines if the Scheduler tracks changes to instances to
-# help with its filtering decisions. (boolean value)
-#scheduler_tracks_instance_changes=true
-
-
-#
-# Options defined in nova.scheduler.ironic_host_manager
-#
-
-# Which filter class names to use for filtering baremetal
-# hosts when not specified in the request. (list value)
-#baremetal_scheduler_default_filters=RetryFilter,AvailabilityZoneFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ExactRamFilter,ExactDiskFilter,ExactCoreFilter
-
-# Flag to decide whether to use
-# baremetal_scheduler_default_filters or not. (boolean value)
-#scheduler_use_baremetal_filters=false
-
-
-#
-# Options defined in nova.scheduler.manager
-#
-
-# Default driver to use for the scheduler (string value)
-#scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler
-
-# How often (in seconds) to run periodic tasks in the
-# scheduler driver of your choice. Please note this is likely
-# to interact with the value of service_down_time, but exactly
-# how they interact will depend on your choice of scheduler
-# driver. (integer value)
-#scheduler_driver_task_period=60
-
-
-#
-# Options defined in nova.scheduler.rpcapi
-#
-
-# The topic scheduler nodes listen on (string value)
-#scheduler_topic=scheduler
-
-
-#
-# Options defined in nova.scheduler.scheduler_options
-#
-
-# Absolute path to scheduler configuration JSON file. (string
-# value)
-#scheduler_json_config_location=
-
-
-#
-# Options defined in nova.scheduler.utils
-#
-
-# Maximum number of attempts to schedule an instance (integer
-# value)
-#scheduler_max_attempts=3
-
-
-#
-# Options defined in nova.scheduler.weights.io_ops
-#
-
-# Multiplier used for weighing host io ops. Negative numbers
-# mean a preference to choose light workload compute hosts.
-# (floating point value)
-#io_ops_weight_multiplier=-1.0
-
-
-#
-# Options defined in nova.scheduler.weights.ram
-#
-
-# Multiplier used for weighing ram. Negative numbers mean to
-# stack vs spread. (floating point value)
-#ram_weight_multiplier=1.0
-
-
-#
-# Options defined in nova.servicegroup.api
-#
-
-# The driver for servicegroup service (valid options are: db,
-# zk, mc) (string value)
-#servicegroup_driver=db
-
-
-#
-# Options defined in nova.virt.configdrive
-#
-
-# Config drive format. One of iso9660 (default) or vfat
-# (string value)
-#config_drive_format=iso9660
-
-# Set to "always" to force injection to take place on a config
-# drive. NOTE: The "always" will be deprecated in the Liberty
-# release cycle. (string value)
-#force_config_drive=<None>
-
-# Name and optionally path of the tool used for ISO image
-# creation (string value)
-#mkisofs_cmd=genisoimage
-
-
-#
-# Options defined in nova.virt.disk.api
-#
-
-# Name of the mkfs commands for ephemeral device. The format
-# is <os_type>=<mkfs command> (multi valued)
-#virt_mkfs=
-
-# Attempt to resize the filesystem by accessing the image over
-# a block device. This is done by the host and may not be
-# necessary if the image contains a recent version of cloud-
-# init. Possible mechanisms require the nbd driver (for qcow
-# and raw), or loop (for raw). (boolean value)
-#resize_fs_using_block_device=false
-
-
-#
-# Options defined in nova.virt.disk.mount.nbd
-#
-
-# Amount of time, in seconds, to wait for NBD device start up.
-# (integer value)
-#timeout_nbd=10
-
-
-#
-# Options defined in nova.virt.driver
-#
-
-# Driver to use for controlling virtualization. Options
-# include: libvirt.LibvirtDriver, xenapi.XenAPIDriver,
-# fake.FakeDriver, baremetal.BareMetalDriver,
-# vmwareapi.VMwareVCDriver, hyperv.HyperVDriver (string value)
-compute_driver=solariszones.SolarisZonesDriver
-
-# The default format an ephemeral_volume will be formatted
-# with on creation. (string value)
-#default_ephemeral_format=<None>
-
-# VM image preallocation mode: "none" => no storage
-# provisioning is done up front, "space" => storage is fully
-# allocated at instance start (string value)
-#preallocate_images=none
-
-# Whether to use cow images (boolean value)
-#use_cow_images=true
-
-# Fail instance boot if vif plugging fails (boolean value)
-#vif_plugging_is_fatal=true
-
-# Number of seconds to wait for neutron vif plugging events to
-# arrive before continuing or failing (see
-# vif_plugging_is_fatal). If this is set to zero and
-# vif_plugging_is_fatal is False, events should not be
-# expected to arrive at all. (integer value)
-#vif_plugging_timeout=300
-
-
-#
-# Options defined in nova.virt.firewall
-#
-
-# Firewall driver (defaults to hypervisor specific iptables
-# driver) (string value)
-#firewall_driver=<None>
-
-# Whether to allow network traffic from same network (boolean
-# value)
-#allow_same_net_traffic=true
-
-
-#
-# Options defined in nova.virt.hardware
-#
-
-# Defines which pcpus that instance vcpus can use. For
-# example, "4-12,^8,15" (string value)
-#vcpu_pin_set=<None>
-
-
-#
-# Options defined in nova.virt.imagecache
-#
-
-# Number of seconds to wait between runs of the image cache
-# manager. Set to -1 to disable. Setting this to 0 will run at
-# the default rate. (integer value)
-#image_cache_manager_interval=2400
-
-# Where cached images are stored under $instances_path. This
-# is NOT the full path - just a folder name. For per-compute-
-# host cached images, set to _base_$my_ip (string value)
-#image_cache_subdirectory_name=_base
+#mkisofs_cmd = genisoimage
+
+# Number of seconds to wait between runs of the image cache manager. Set to -1
+# to disable. Setting this to 0 will run at the default rate. (integer value)
+#image_cache_manager_interval = 2400
+
+# Where cached images are stored under $instances_path. This is NOT the full
+# path - just a folder name. For per-compute-host cached images, set to
+# _base_$my_ip (string value)
+#image_cache_subdirectory_name = _base
# Should unused base images be removed? (boolean value)
-#remove_unused_base_images=true
-
-# Unused unresized base images younger than this will not be
-# removed (integer value)
-#remove_unused_original_minimum_age_seconds=86400
-
-
-#
-# Options defined in nova.virt.images
-#
-
-# Force backing images to raw format (boolean value)
-#force_raw_images=true
-
-
-#
-# Options defined in nova.virt.netutils
-#
-
-# Template file for injected network (string value)
-#injected_network_template=$pybasedir/nova/virt/interfaces.template
-
-
-#
-# Options defined in nova.virt.solariszones.driver
-#
-
-# Cinder volume type to use for boot volumes (string value)
-#boot_volume_type=<None>
-
-# Cinder availability zone to use for boot volumes (string
+#remove_unused_base_images = true
+
+# Unused unresized base images younger than this will not be removed (integer
# value)
-#boot_volume_az=<None>
-
-# Default path to Glance cache for Solaris Zones. (string
+#remove_unused_original_minimum_age_seconds = 86400
+
+#
+# From 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 for removal.
+# Its value may be silently ignored in the future.
+#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 = <None>
+
+# 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)
-#glancecache_dirname=/var/share/nova/images
-
-# Cipher to use for encryption of memory traffic during live
-# migration. If not specified, a common encryption algorithm
-# will be negotiated. Options include: none or the name of a
-# supported OpenSSL cipher algorithm. (string value)
-#live_migration_cipher=<None>
-
-# Location to store snapshots before uploading them to the
-# Glance image service. (string value)
-#solariszones_snapshots_directory=$instances_path/snapshots
-
-# Default path for suspend images for Solaris Zones. (string
-# value)
-#zones_suspend_path=/var/share/zones/SYSsuspend
-
-# Allow kernel boot options to be set in instance metadata.
+#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 = <None>
+
+# (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 = <None>
+
+# 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)
-#solariszones_boot_options=true
-
-
-#
-# Options defined in nova.vnc
-#
-
-# Location of VNC console proxy, in the form
-# "http://127.0.0.1:6080/vnc_auto.html" (string value)
-novncproxy_base_url=http://$my_ip:6080/vnc_auto.html
-
-# Location of nova xvp VNC console proxy, in the form
-# "http://127.0.0.1:6081/console" (string value)
-#xvpvncproxy_base_url=http://127.0.0.1:6081/console
-
-# IP address on which instance vncservers should listen
-# (string value)
-#vncserver_listen=127.0.0.1
-
-# The address to which proxy clients (like nova-xvpvncproxy)
-# should connect (string value)
-#vncserver_proxyclient_address=127.0.0.1
-
-# Enable VNC related features (boolean value)
-#vnc_enabled=true
-
-# Keymap for VNC (string value)
-#vnc_keymap=en-us
-
-
-#
-# Options defined in nova.vnc.xvp_proxy
-#
-
-# Port that the XCP VNC proxy should bind to (integer value)
-#xvpvncproxy_port=6081
-
-# Address that the XCP VNC proxy should bind to (string value)
-#xvpvncproxy_host=0.0.0.0
-
-
-#
-# Options defined in nova.volume
-#
-
-# The full class name of the volume API class to use (string
+#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)
-#volume_api_class=nova.volume.cinder.API
-
-
-#
-# Options defined in nova.openstack.common.eventlet_backdoor
-#
-
-# Enable eventlet backdoor. Acceptable values are 0, <port>,
-# and <start>:<end>, where 0 results in listening on a random
-# tcp port number; <port> results in listening on the
-# specified port number (and not enabling backdoor if that
-# port is in use); and <start>:<end> results in listening on
-# the smallest unused port number within the specified range
-# of port numbers. The chosen port is displayed in the
-# service's log file. (string value)
-#backdoor_port=<None>
-
-
-#
-# Options defined in nova.openstack.common.memorycache
-#
-
-# Memcached servers or None for in process cache. (list value)
-#memcached_servers=<None>
-
-
-#
-# Options defined in nova.openstack.common.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 nova.openstack.common.policy
-#
-
-# The JSON file that defines policies. (string value)
-#policy_file=policy.json
-
-# Default rule. Enforced when a requested rule is not found.
-# (string value)
-#policy_default_rule=default
-
-# Directories where policy configuration files are stored.
-# They can be relative to any directory in the search path
-# defined by the config_dir option, or absolute paths. The
-# file defined by policy_file must exist for these directories
-# to be searched. Missing or empty directories are ignored.
-# (multi valued)
-#policy_dirs=policy.d
-
-
-#
-# Options defined in nova.openstack.common.versionutils
-#
-
-# Enables or disables fatal status of deprecations. (boolean
+#instance_uuid_format = "[instance: %(uuid)s] "
+
+# Enables or disables fatal status of deprecations. (boolean value)
+#fatal_deprecations = false
+
+#
+# From 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)
+# Allowed 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 = <None>
+
+# 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)
-#fatal_deprecations=false
+#use_pub_sub = true
+
+# Minimal port number for random ports range. (port value)
+# Minimum value: 0
+# Maximum value: 65535
+#rpc_zmq_min_port = 49152
+
+# Maximal port number for random ports range. (integer value)
+# Minimum value: 1
+# Maximum value: 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 = <None>
+
+# 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
+
+#
+# From 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
+
+#
+# From oslo.service.service
+#
+
+# Enable eventlet backdoor. Acceptable values are 0, <port>, and
+# <start>:<end>, where 0 results in listening on a random tcp port number;
+# <port> results in listening on the specified port number (and not enabling
+# backdoor if that port is in use); and <start>:<end> results in listening on
+# the smallest unused port number within the specified range of port numbers.
+# The chosen port is displayed in the service's log file. (string value)
+#backdoor_port = <None>
+
+# 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 = <None>
+
+# 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
[api_database]
#
-# Options defined in nova.db.sqlalchemy.api
-#
-
-# The SQLAlchemy connection string to use to connect to the
-# Nova API database. (string value)
-#connection=<None>
+# From nova
+#
+
+# The SQLAlchemy connection string to use to connect to the Nova API database.
+# (string value)
+connection = mysql://%SERVICE_USER%:%SERVICE_PASSWORD%@localhost/nova_api
# If True, SQLite uses synchronous mode. (boolean value)
-#sqlite_synchronous=true
-
-# Timeout before idle SQL connections are reaped. (integer
+#sqlite_synchronous = true
+
+# The SQLAlchemy connection string to use to connect to the slave database.
+# (string value)
+#slave_connection = <None>
+
+# The SQL mode to be used for MySQL sessions. This option, including the
+# default, overrides any server-set SQL mode. To use whatever SQL mode is set
+# by the server configuration, set this to no value. Example: mysql_sql_mode=
+# (string value)
+#mysql_sql_mode = TRADITIONAL
+
+# Timeout before idle SQL connections are reaped. (integer value)
+#idle_timeout = 3600
+
+# Maximum number of SQL connections to keep open in a pool. (integer value)
+#max_pool_size = <None>
+
+# Maximum number of database connection retries during startup. Set to -1 to
+# specify an infinite retry count. (integer value)
+#max_retries = 10
+
+# Interval between retries of opening a SQL connection. (integer value)
+#retry_interval = 10
+
+# If set, use this value for max_overflow with SQLAlchemy. (integer value)
+#max_overflow = <None>
+
+# Verbosity of SQL debugging information: 0=None, 100=Everything. (integer
# value)
-#idle_timeout=3600
-
-# Maximum number of SQL connections to keep open in a pool.
-# (integer value)
-#max_pool_size=<None>
-
-# Maximum number of database connection retries during
-# startup. Set to -1 to specify an infinite retry count.
-# (integer value)
-#max_retries=10
-
-# Interval between retries of opening a SQL connection.
-# (integer value)
-#retry_interval=10
-
-# If set, use this value for max_overflow with SQLAlchemy.
-# (integer value)
-#max_overflow=<None>
-
-# Verbosity of SQL debugging information: 0=None,
-# 100=Everything. (integer value)
-#connection_debug=0
-
-# Add Python stack traces to SQL as comment strings. (boolean
-# value)
-#connection_trace=false
-
-# If set, use this value for pool_timeout with SQLAlchemy.
-# (integer value)
-#pool_timeout=<None>
+#connection_debug = 0
+
+# Add Python stack traces to SQL as comment strings. (boolean value)
+#connection_trace = false
+
+# If set, use this value for pool_timeout with SQLAlchemy. (integer value)
+#pool_timeout = <None>
[barbican]
#
-# Options defined in nova.keymgr.barbican
-#
-
-# Info to match when looking for barbican in the service
-# catalog. Format is: separated values of the form:
-# <service_type>:<service_name>:<endpoint_type> (string value)
-#catalog_info=key-manager:barbican:public
-
-# Override service catalog lookup with template for barbican
-# endpoint e.g. http://localhost:9311/v1/%(project_id)s
+# From castellan.config
+#
+
+# Use this endpoint to connect to Barbican, for example:
+# "http://localhost:9311/" (string value)
+#barbican_endpoint = <None>
+
+# Version of the Barbican API, for example: "v1" (string value)
+#barbican_api_version = <None>
+
+# Use this endpoint to connect to Keystone (string value)
+#auth_endpoint = http://localhost:5000/v3
+
+# Number of seconds to wait before retrying poll for key creation completion
+# (integer value)
+#retry_delay = 1
+
+# Number of times to retry poll for key creation completion (integer value)
+#number_of_retries = 60
+
+#
+# From nova
+#
+
+# Info to match when looking for barbican in the service catalog. Format is:
+# separated values of the form: <service_type>:<service_name>:<endpoint_type>
# (string value)
-#endpoint_template=<None>
+#catalog_info = key-manager:barbican:public
+
+# Override service catalog lookup with template for barbican endpoint e.g.
+# http://localhost:9311/v1/%(project_id)s (string value)
+#endpoint_template = <None>
# Region name of this node (string value)
-#os_region_name=<None>
-
-
-#
-# Options defined in nova.volume.cinder
-#
-
-# Region name of this node (string value)
-#os_region_name=<None>
+#os_region_name = <None>
+
+
+[cache]
+
+#
+# From oslo.cache
+#
+
+# Prefix for building the configuration dictionary for the cache region. This
+# should not need to be changed unless there is another dogpile.cache region
+# with the same configuration name. (string value)
+#config_prefix = cache.oslo
+
+# Default TTL, in seconds, for any cached item in the dogpile.cache region.
+# This applies to any cached method that doesn't have an explicit cache
+# expiration time defined for it. (integer value)
+#expiration_time = 600
+
+# Dogpile.cache backend module. It is recommended that Memcache with pooling
+# (oslo_cache.memcache_pool) or Redis (dogpile.cache.redis) be used in
+# production deployments. Small workloads (single process) like devstack can
+# use the dogpile.cache.memory backend. (string value)
+#backend = dogpile.cache.null
+
+# Arguments supplied to the backend module. Specify this option once per
+# argument to be passed to the dogpile.cache backend. Example format:
+# "<argname>:<value>". (multi valued)
+#backend_argument =
+
+# Proxy classes to import that will affect the way the dogpile.cache backend
+# functions. See the dogpile.cache documentation on changing-backend-behavior.
+# (list value)
+#proxies =
+
+# Global toggle for caching. (boolean value)
+#enabled = false
+
+# Extra debugging from the cache backend (cache keys, get/set/delete/etc
+# calls). This is only really useful if you need to see the specific cache-
+# backend get/set/delete calls with the keys/values. Typically this should be
+# left set to false. (boolean value)
+#debug_cache_backend = false
+
+# Memcache servers in the format of "host:port". (dogpile.cache.memcache and
+# oslo_cache.memcache_pool backends only). (list value)
+#memcache_servers = localhost:11211
+
+# Number of seconds memcached server is considered dead before it is tried
+# again. (dogpile.cache.memcache and oslo_cache.memcache_pool backends only).
+# (integer value)
+#memcache_dead_retry = 300
+
+# Timeout in seconds for every call to a server. (dogpile.cache.memcache and
+# oslo_cache.memcache_pool backends only). (integer value)
+#memcache_socket_timeout = 3
+
+# Max total number of open connections to every memcached server.
+# (oslo_cache.memcache_pool backend only). (integer value)
+#memcache_pool_maxsize = 10
+
+# Number of seconds a connection to memcached is held unused in the pool before
+# it is closed. (oslo_cache.memcache_pool backend only). (integer value)
+#memcache_pool_unused_timeout = 60
+
+# Number of seconds that an operation will wait to get a memcache client
+# connection. (integer value)
+#memcache_pool_connection_get_timeout = 10
[cells]
#
-# Options defined in nova.cells.manager
-#
-
-# Cells communication driver to use (string value)
-#driver=nova.cells.rpc_driver.CellsRPCDriver
-
-# Number of seconds after an instance was updated or deleted
-# to continue to update cells (integer value)
-#instance_updated_at_threshold=3600
-
-# Number of instances to update per periodic task run (integer
-# value)
-#instance_update_num_instances=1
-
-
-#
-# Options defined in nova.cells.messaging
-#
-
-# Maximum number of hops for cells routing. (integer value)
-#max_hop_count=10
-
-# Cells scheduler to use (string value)
-#scheduler=nova.cells.scheduler.CellsScheduler
-
-
-#
-# Options defined in nova.cells.opts
-#
-
-# Enable cell functionality (boolean value)
-#enable=false
-
-# The topic cells nodes listen on (string value)
-#topic=cells
-
-# Manager for cells (string value)
-#manager=nova.cells.manager.CellsManager
-
-# Name of this cell (string value)
-#name=nova
-
-# Key/Multi-value list with the capabilities of the cell (list
-# value)
-#capabilities=hypervisor=xenserver;kvm,os=linux;windows
-
-# Seconds to wait for response from a call to a cell. (integer
-# value)
-#call_timeout=60
-
-# Percentage of cell capacity to hold in reserve. Affects both
-# memory and disk utilization (floating point value)
-#reserve_percent=10.0
-
-# Type of cell: api or compute (string value)
-#cell_type=compute
-
-# Number of seconds after which a lack of capability and
-# capacity updates signals the child cell is to be treated as
-# a mute. (integer value)
-#mute_child_interval=300
-
-# Seconds between bandwidth updates for cells. (integer value)
-#bandwidth_update_interval=600
-
-
-#
-# Options defined in nova.cells.rpc_driver
-#
-
-# Base queue name to use when communicating between cells.
-# Various topics by message type will be appended to this.
-# (string value)
-#rpc_driver_queue_base=cells.intercell
-
-
-#
-# Options defined in nova.cells.scheduler
-#
-
-# Filter classes the cells scheduler should use. An entry of
+# From nova.conf
+#
+
+#
+# Enable cell functionality
+#
+# When this functionality is enabled, it lets you to scale an OpenStack
+# Compute cloud in a more distributed fashion without having to use
+# complicated technologies like database and message queue clustering.
+# Cells are configured as a tree. The top-level cell should have a host
+# that runs a nova-api service, but no nova-compute services. Each
+# child cell should run all of the typical nova-* services in a regular
+# Compute cloud except for nova-api. You can think of cells as a normal
+# Compute deployment in that each cell has its own database server and
+# message queue broker.
+#
+# Possible values:
+#
+# * True: Enables the feature
+# * False: Disables the feature
+#
+# Services which consume this:
+#
+# * nova-api
+# * nova-cells
+# * nova-compute
+#
+# Related options:
+#
+# * name: A unique cell name must be given when this functionality
+# is enabled.
+# * cell_type: Cell type should be defined for all cells.
+# (boolean value)
+#enable = false
+
+#
+# Topic
+#
+# This is the message queue topic that cells nodes listen on. It is
+# used when the cells service is started up to configure the queue,
+# and whenever an RPC call to the scheduler is made.
+#
+# Possible values:
+#
+# * cells: This is the recommended and the default value.
+#
+# Services which consume this:
+#
+# * nova-cells
+#
+# Related options:
+#
+# * None
+# (string value)
+#topic = cells
+
+#
+# DEPRECATED: Manager for cells
+#
+# The nova-cells manager class. This class defines RPC methods that
+# the local cell may call. This class is NOT used for messages coming
+# from other cells. That communication is driver-specific.
+#
+# Communication to other cells happens via the nova.cells.messaging module.
+# The MessageRunner from that module will handle routing the message to
+# the correct cell via the communication driver. Most methods below
+# create 'targeted' (where we want to route a message to a specific cell)
+# or 'broadcast' (where we want a message to go to multiple cells)
+# messages.
+#
+# Scheduling requests get passed to the scheduler class.
+#
+# Possible values:
+#
+# * 'nova.cells.manager.CellsManager' is the only possible value for
+# this option as of the Mitaka release
+#
+# Services which consume this:
+#
+# * nova-cells
+#
+# Related options:
+#
+# * None
+# (string value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#manager = nova.cells.manager.CellsManager
+
+#
+# Name of the current cell
+#
+# This value must be unique for each cell. Name of a cell is used as
+# its id, leaving this option unset or setting the same name for
+# two or more cells may cause unexpected behaviour.
+#
+# Possible values:
+#
+# * Unique name string
+#
+# Services which consume this:
+#
+# * nova-cells
+#
+# Related options:
+#
+# * enabled: This option is meaningful only when cells service
+# is enabled
+# (string value)
+#name = nova
+
+#
+# Cell capabilities
+#
+# List of arbitrary key=value pairs defining capabilities of the
+# current cell to be sent to the parent cells. These capabilities
+# are intended to be used in cells scheduler filters/weighers.
+#
+# Possible values:
+#
+# * key=value pairs list for example;
+# ``hypervisor=xenserver;kvm,os=linux;windows``
+#
+# Services which consume this:
+#
+# * nova-cells
+#
+# Related options:
+#
+# * None
+# (list value)
+#capabilities = hypervisor=xenserver;kvm,os=linux;windows
+
+#
+# Call timeout
+#
+# Cell messaging module waits for response(s) to be put into the
+# eventlet queue. This option defines the seconds waited for
+# response from a call to a cell.
+#
+# Possible values:
+#
+# * Time in seconds.
+#
+# Services which consume this:
+#
+# * nova-cells
+#
+# Related options:
+#
+# * None
+# (integer value)
+#call_timeout = 60
+
+#
+# Reserve percentage
+#
+# Percentage of cell capacity to hold in reserve, so the minimum
+# amount of free resource is considered to be;
+# min_free = total * (reserve_percent / 100.0)
+# This option affects both memory and disk utilization.
+# The primary purpose of this reserve is to ensure some space is
+# available for users who want to resize their instance to be larger.
+# Note that currently once the capacity expands into this reserve
+# space this option is ignored.
+#
+# Possible values:
+#
+# * Float percentage value
+#
+# Services which consume this:
+#
+# * nova-cells
+#
+# Related options:
+#
+# * None
+# (floating point value)
+#reserve_percent = 10.0
+
+#
+# Type of cell
+#
+# When cells feature is enabled the hosts in the OpenStack Compute
+# cloud are partitioned into groups. Cells are configured as a tree.
+# The top-level cell's cell_type must be set to ``api``. All other
+# cells are defined as a ``compute cell`` by default.
+#
+# Possible values:
+#
+# * api: Cell type of top-level cell.
+# * compute: Cell type of all child cells. (Default)
+#
+# Services which consume this:
+#
+# * nova-cells
+#
+# Related options:
+#
+# * compute_api_class: This option must be set to cells api driver
+# for the top-level cell (nova.compute.cells_api.ComputeCellsAPI)
+# * quota_driver: Disable quota checking for the child cells.
+# (nova.quota.NoopQuotaDriver)
+# (string value)
+# Allowed values: api, compute
+#cell_type = compute
+
+#
+# Mute child interval
+#
+# Number of seconds after which a lack of capability and capacity
+# update the child cell is to be treated as a mute cell. Then the
+# child cell will be weighed as recommend highly that it be skipped.
+#
+# Possible values:
+#
+# * Time in seconds.
+#
+# Services which consume this:
+#
+# * nova-cells
+#
+# Related options:
+#
+# * None
+# (integer value)
+#mute_child_interval = 300
+
+#
+# Bandwidth update interval
+#
+# Seconds between bandwidth usage cache updates for cells.
+#
+# Possible values:
+#
+# * Time in seconds.
+#
+# Services which consume this:
+#
+# * nova-compute
+#
+# Related options:
+#
+# * None
+# (integer value)
+#bandwidth_update_interval = 600
+
+#
+# Instance update sync database limit
+#
+# Number of instances to pull from the database at one time for
+# a sync. If there are more instances to update the results will
+# be paged through.
+#
+# Possible values:
+#
+# * Number of instances.
+#
+# Services which consume this:
+#
+# * nova-cells
+#
+# Related options:
+#
+# * None
+# (integer value)
+#instance_update_sync_database_limit = 100
+
+#
+# Mute weight multiplier
+#
+# Multiplier used to weigh mute children. Mute children cells are
+# recommended to be skipped so their weight is multiplied by this
+# negative value.
+#
+# Possible values:
+#
+# * Negative numeric number
+#
+# Services which consume this:
+#
+# * nova-cells
+#
+# Related options:
+#
+# * None
+# (floating point value)
+#mute_weight_multiplier = -10000.0
+
+#
+# Ram weight multiplier
+#
+# Multiplier used for weighing ram. Negative numbers indicate that
+# Compute should stack VMs on one host instead of spreading out new
+# VMs to more hosts in the cell.
+#
+# Possible values:
+#
+# * Numeric multiplier
+#
+# Services which consume this:
+#
+# * nova-cells
+#
+# Related options:
+#
+# * None
+# (floating point value)
+#ram_weight_multiplier = 10.0
+
+#
+# Offset weight multiplier
+#
+# Multiplier used to weigh offset weigher. Cells with higher
+# weight_offsets in the DB will be preferred. The weight_offset
+# is a property of a cell stored in the database. It can be used
+# by a deployer to have scheduling decisions favor or disfavor
+# cells based on the setting.
+#
+# Possible values:
+#
+# * Numeric multiplier
+#
+# Services which consume this:
+#
+# * nova-cells
+#
+# Related options:
+#
+# * None
+# (floating point value)
+#offset_weight_multiplier = 1.0
+
+#
+# Cells communication driver
+#
+# Driver for cell<->cell communication via RPC. This is used to
+# setup the RPC consumers as well as to send a message to another cell.
+# 'nova.cells.rpc_driver.CellsRPCDriver' starts up 2 separate servers
+# for handling inter-cell communication via RPC.
+#
+# Possible values:
+#
+# * 'nova.cells.rpc_driver.CellsRPCDriver' is the default driver
+# * Otherwise it should be the full Python path to the class to be used
+#
+# Services which consume this:
+#
+# * nova-cells
+#
+# Related options:
+#
+# * None
+# (string value)
+#driver = nova.cells.rpc_driver.CellsRPCDriver
+
+#
+# Instance updated at threshold
+#
+# Number of seconds after an instance was updated or deleted to
+# continue to update cells. This option lets cells manager to only
+# attempt to sync instances that have been updated recently.
+# i.e., a threshold of 3600 means to only update instances that
+# have modified in the last hour.
+#
+# Possible values:
+#
+# * Threshold in seconds
+#
+# Services which consume this:
+#
+# * nova-cells
+#
+# Related options:
+#
+# * This value is used with the ``instance_update_num_instances``
+# value in a periodic task run.
+# (integer value)
+#instance_updated_at_threshold = 3600
+
+#
+# Instance update num instances
+#
+# On every run of the periodic task, nova cells manager will attempt to
+# sync instance_updated_at_threshold number of instances. When the
+# manager gets the list of instances, it shuffles them so that multiple
+# nova-cells services do not attempt to sync the same instances in
+# lockstep.
+#
+# Possible values:
+#
+# * Positive integer number
+#
+# Services which consume this:
+#
+# * nova-cells
+#
+# Related options:
+#
+# * This value is used with the ``instance_updated_at_threshold``
+# value in a periodic task run.
+# (integer value)
+#instance_update_num_instances = 1
+
+#
+# Maximum hop count
+#
+# When processing a targeted message, if the local cell is not the
+# target, a route is defined between neighbouring cells. And the
+# message is processed across the whole routing path. This option
+# defines the maximum hop counts until reaching the target.
+#
+# Possible values:
+#
+# * Positive integer value
+#
+# Services which consume this:
+#
+# * nova-cells
+#
+# Related options:
+#
+# * None
+# (integer value)
+#max_hop_count = 10
+
+#
+# Cells scheduler
+#
+# The class of the driver used by the cells scheduler. This should be
+# the full Python path to the class to be used. If nothing is specified
+# in this option, the CellsScheduler is used.
+#
+#
+# Possible values:
+#
+# * 'nova.cells.scheduler.CellsScheduler' is the default option
+# * Otherwise it should be the full Python path to the class to be used
+#
+# Services which consume this:
+#
+# * nova-cells
+#
+# Related options:
+#
+# * None
+# (string value)
+#scheduler = nova.cells.scheduler.CellsScheduler
+
+#
+# RPC driver queue base
+#
+# When sending a message to another cell by JSON-ifying the message
+# and making an RPC cast to 'process_message', a base queue is used.
+# This option defines the base queue name to be used when communicating
+# between cells. Various topics by message type will be appended to this.
+#
+# Possible values:
+#
+# * The base queue name to be used when communicating between cells.
+#
+# Services which consume this:
+#
+# * nova-cells
+#
+# Related options:
+#
+# * None
+# (string value)
+#rpc_driver_queue_base = cells.intercell
+
+#
+# Scheduler filter classes
+#
+# Filter classes the cells scheduler should use. An entry of
# "nova.cells.filters.all_filters" maps to all cells filters
-# included with nova. (list value)
-#scheduler_filter_classes=nova.cells.filters.all_filters
-
-# Weigher classes the cells scheduler should use. An entry of
+# included with nova. As of the Mitaka release the following
+# filter classes are available:
+#
+# Different cell filter: A scheduler hint of 'different_cell'
+# with a value of a full cell name may be specified to route
+# a build away from a particular cell.
+#
+# Image properties filter: Image metadata named
+# 'hypervisor_version_requires' with a version specification
+# may be specified to ensure the build goes to a cell which
+# has hypervisors of the required version. If either the version
+# requirement on the image or the hypervisor capability of the
+# cell is not present, this filter returns without filtering out
+# the cells.
+#
+# Target cell filter: A scheduler hint of 'target_cell' with a
+# value of a full cell name may be specified to route a build to
+# a particular cell. No error handling is done as there's no way
+# to know whether the full path is a valid.
+#
+# As an admin user, you can also add a filter that directs builds
+# to a particular cell.
+#
+#
+# Possible values:
+#
+# * 'nova.cells.filters.all_filters' is the default option
+# * Otherwise it should be the full Python path to the class to be used
+#
+# Services which consume this:
+#
+# * nova-cells
+#
+# Related options:
+#
+# * None
+# (list value)
+#scheduler_filter_classes = nova.cells.filters.all_filters
+
+#
+# Scheduler weight classes
+#
+# Weigher classes the cells scheduler should use. An entry of
# "nova.cells.weights.all_weighers" maps to all cell weighers
-# included with nova. (list value)
-#scheduler_weight_classes=nova.cells.weights.all_weighers
-
-# How many retries when no cells are available. (integer
-# value)
-#scheduler_retries=10
-
-# How often to retry in seconds when no cells are available.
-# (integer value)
-#scheduler_retry_delay=2
-
-
-#
-# Options defined in nova.cells.state
-#
-
-# Interval, in seconds, for getting fresh cell information
-# from the database. (integer value)
-#db_check_interval=60
-
-# Configuration file from which to read cells configuration.
-# If given, overrides reading cells from the database. (string
-# value)
-#cells_config=<None>
-
-
-#
-# Options defined in nova.cells.weights.mute_child
-#
-
-# Multiplier used to weigh mute children. (The value should be
-# negative.) (floating point value)
-#mute_weight_multiplier=-10.0
-
-# Weight value assigned to mute children. (The value should be
-# positive.) (floating point value)
-#mute_weight_value=1000.0
-
-
-#
-# Options defined in nova.cells.weights.ram_by_instance_type
-#
-
-# Multiplier used for weighing ram. Negative numbers mean to
-# stack vs spread. (floating point value)
-#ram_weight_multiplier=10.0
-
-
-#
-# Options defined in nova.cells.weights.weight_offset
-#
-
-# Multiplier used to weigh offset weigher. (floating point
-# value)
-#offset_weight_multiplier=1.0
+# included with nova. As of the Mitaka release the following
+# weight classes are available:
+#
+# mute_child: Downgrades the likelihood of child cells being
+# chosen for scheduling requests, which haven't sent capacity
+# or capability updates in a while. Options include
+# mute_weight_multiplier (multiplier for mute children; value
+# should be negative).
+#
+# ram_by_instance_type: Select cells with the most RAM capacity
+# for the instance type being requested. Because higher weights
+# win, Compute returns the number of available units for the
+# instance type requested. The ram_weight_multiplier option defaults
+# to 10.0 that adds to the weight by a factor of 10. Use a negative
+# number to stack VMs on one host instead of spreading out new VMs
+# to more hosts in the cell.
+#
+# weight_offset: Allows modifying the database to weight a particular
+# cell. The highest weight will be the first cell to be scheduled for
+# launching an instance. When the weight_offset of a cell is set to 0,
+# it is unlikely to be picked but it could be picked if other cells
+# have a lower weight, like if they're full. And when the weight_offset
+# is set to a very high value (for example, '999999999999999'), it is
+# likely to be picked if another cell do not have a higher weight.
+#
+# Possible values:
+#
+# * 'nova.cells.weights.all_weighers' is the default option
+# * Otherwise it should be the full Python path to the class to be used
+#
+# Services which consume this:
+#
+# * nova-cells
+#
+# Related options:
+#
+# * None
+# (list value)
+#scheduler_weight_classes = nova.cells.weights.all_weighers
+
+#
+# Scheduler retries
+#
+# How many retries when no cells are available. Specifies how many
+# times the scheduler tries to launch a new instance when no cells
+# are available.
+#
+# Possible values:
+#
+# * Positive integer value
+#
+# Services which consume this:
+#
+# * nova-cells
+#
+# Related options:
+#
+# * This value is used with the ``scheduler_retry_delay`` value
+# while retrying to find a suitable cell.
+# (integer value)
+#scheduler_retries = 10
+
+#
+# Scheduler retry delay
+#
+# Specifies the delay (in seconds) between scheduling retries when no
+# cell can be found to place the new instance on. When the instance
+# could not be scheduled to a cell after ``scheduler_retries`` in
+# combination with ``scheduler_retry_delay``, then the scheduling
+# of the instance failed.
+#
+# Possible values:
+#
+# * Time in seconds.
+#
+# Services which consume this:
+#
+# * nova-cells
+#
+# Related options:
+#
+# * This value is used with the ``scheduler_retries`` value
+# while retrying to find a suitable cell.
+# (integer value)
+#scheduler_retry_delay = 2
+
+#
+# DB check interval
+#
+# Cell state manager updates cell status for all cells from the DB
+# only after this particular interval time is passed. Otherwise cached
+# status are used. If this value is 0 or negative all cell status are
+# updated from the DB whenever a state is needed.
+#
+# Possible values:
+#
+# * Interval time, in seconds.
+#
+# Services which consume this:
+#
+# * nova-cells
+#
+# Related options:
+#
+# * None
+# (integer value)
+#db_check_interval = 60
+
+#
+# Optional cells configuration
+#
+# Configuration file from which to read cells configuration. If given,
+# overrides reading cells from the database.
+#
+# Cells store all inter-cell communication data, including user names
+# and passwords, in the database. Because the cells data is not updated
+# very frequently, use this option to specify a JSON file to store
+# cells data. With this configuration, the database is no longer
+# consulted when reloading the cells data. The file must have columns
+# present in the Cell model (excluding common database fields and the
+# id column). You must specify the queue connection information through
+# a transport_url field, instead of username, password, and so on.
+#
+# The transport_url has the following form:
+# rabbit://USERNAME:PASSWORD@HOSTNAME:PORT/VIRTUAL_HOST
+#
+# Possible values:
+#
+# The scheme can be either qpid or rabbit, the following sample shows
+# this optional configuration:
+#
+# {
+# "parent": {
+# "name": "parent",
+# "api_url": "http://api.example.com:8774",
+# "transport_url": "rabbit://rabbit.example.com",
+# "weight_offset": 0.0,
+# "weight_scale": 1.0,
+# "is_parent": true
+# },
+# "cell1": {
+# "name": "cell1",
+# "api_url": "http://api.example.com:8774",
+# "transport_url": "rabbit://rabbit1.example.com",
+# "weight_offset": 0.0,
+# "weight_scale": 1.0,
+# "is_parent": false
+# },
+# "cell2": {
+# "name": "cell2",
+# "api_url": "http://api.example.com:8774",
+# "transport_url": "rabbit://rabbit2.example.com",
+# "weight_offset": 0.0,
+# "weight_scale": 1.0,
+# "is_parent": false
+# }
+# }
+#
+# Services which consume this:
+#
+# * nova-cells
+#
+# Related options:
+#
+# * None
+# (string value)
+#cells_config = <None>
[cinder]
#
-# Options defined in nova.volume.cinder
-#
-
-# Info to match when looking for cinder in the service
-# catalog. Format is: separated values of the form:
-# <service_type>:<service_name>:<endpoint_type> (string value)
-#catalog_info=volumev2:cinderv2:publicURL
-
-# Override service catalog lookup with template for cinder
-# endpoint e.g. http://localhost:8776/v1/%(project_id)s
+# From nova
+#
+
+# Info to match when looking for cinder in the service catalog. Format is:
+# separated values of the form: <service_type>:<service_name>:<endpoint_type>
# (string value)
-#endpoint_template=<None>
-
-# Number of cinderclient retries on failed http calls (integer
-# value)
-#http_retries=3
-
-# Allow attach between instance and volume in different
-# availability zones. (boolean value)
-#cross_az_attach=true
+#catalog_info = volumev2:cinderv2:publicURL
+
+# Override service catalog lookup with template for cinder endpoint e.g.
+# http://localhost:8776/v1/%(project_id)s (string value)
+#endpoint_template = <None>
+
+# Region name of this node (string value)
+#os_region_name = <None>
+
+# Number of cinderclient retries on failed http calls (integer value)
+#http_retries = 3
+
+# Allow attach between instance and volume in different availability zones. If
+# False, volumes attached to an instance must be in the same availability zone
+# in Cinder as the instance availability zone in Nova. This also means care
+# should be taken when booting an instance from a volume where source is not
+# "volume" because Nova will attempt to create a volume using the same
+# availability zone as what is assigned to the instance. If that AZ is not in
+# Cinder (or allow_availability_zone_fallback=False in cinder.conf), the volume
+# create request will fail and the instance will fail the build request.
+# (boolean value)
+#cross_az_attach = true
[conductor]
#
-# Options defined in nova.conductor.api
-#
-
-# Perform nova-conductor operations locally (boolean value)
-#use_local=false
+# From nova.conf
+#
+
+# DEPRECATED: Perform nova-conductor operations locally. This legacy mode was
+# introduced to bridge a gap during the transition to the conductor service. It
+# no longer represents a reasonable alternative for deployers. Removal may be
+# as early as 14.0 (boolean value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#use_local = false
# The topic on which conductor nodes listen (string value)
-#topic=conductor
-
-# Full class name for the Manager for conductor (string value)
-#manager=nova.conductor.manager.ConductorManager
-
-# Number of workers for OpenStack Conductor service. The
-# default will be the number of CPUs available. (integer
-# value)
-workers=1
+#topic = conductor
+
+# DEPRECATED: Full class name for the Manager for conductor. Removal in 14.0
+# (string value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#manager = nova.conductor.manager.ConductorManager
+
+# Number of workers for OpenStack Conductor service. The default will be the
+# number of CPUs available. (integer value)
+workers = 1
+
+
+[cors]
+
+#
+# From oslo.middleware
+#
+
+# Indicate whether this resource may be shared with the domain received in the
+# requests "origin" header. (list value)
+#allowed_origin = <None>
+
+# 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 = X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token,X-Service-Token
+
+# 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,PUT,POST,DELETE,PATCH
+
+# Indicate which header field names may be used during the actual request.
+# (list value)
+#allow_headers = X-Auth-Token,X-Openstack-Request-Id,X-Identity-Status,X-Roles,X-Service-Catalog,X-User-Id,X-Tenant-Id
+
+
+[cors.subdomain]
+
+#
+# From oslo.middleware
+#
+
+# Indicate whether this resource may be shared with the domain received in the
+# requests "origin" header. (list value)
+#allowed_origin = <None>
+
+# 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 = X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token,X-Service-Token
+
+# 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,PUT,POST,DELETE,PATCH
+
+# Indicate which header field names may be used during the actual request.
+# (list value)
+#allow_headers = X-Auth-Token,X-Openstack-Request-Id,X-Identity-Status,X-Roles,X-Service-Catalog,X-User-Id,X-Tenant-Id
[database]
#
-# Options defined in oslo.db
+# From nova
#
# The file name to use with SQLite. (string value)
-#sqlite_db=oslo.sqlite
+# Deprecated group/name - [DEFAULT]/sqlite_db
+#sqlite_db = oslo.sqlite
# If True, SQLite uses synchronous mode. (boolean value)
-#sqlite_synchronous=true
+# Deprecated group/name - [DEFAULT]/sqlite_synchronous
+#sqlite_synchronous = true
# The back end to use for the database. (string value)
# Deprecated group/name - [DEFAULT]/db_backend
-#backend=sqlalchemy
-
-# The SQLAlchemy connection string to use to connect to the
-# database. (string value)
+#backend = sqlalchemy
+
+# The SQLAlchemy connection string to use to connect to the database. (string
+# value)
# Deprecated group/name - [DEFAULT]/sql_connection
# Deprecated group/name - [DATABASE]/sql_connection
# Deprecated group/name - [sql]/connection
-connection=mysql://%SERVICE_USER%:%SERVICE_PASSWORD%@localhost/nova
-
-# The SQLAlchemy connection string to use to connect to the
-# slave database. (string value)
-#slave_connection=<None>
-
-# The SQL mode to be used for MySQL sessions. This option,
-# including the default, overrides any server-set SQL mode. To
-# use whatever SQL mode is set by the server configuration,
-# set this to no value. Example: mysql_sql_mode= (string
-# 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)
+connection = mysql://%SERVICE_USER%:%SERVICE_PASSWORD%@localhost/nova
+
+# The SQLAlchemy connection string to use to connect to the slave database.
+# (string value)
+#slave_connection = <None>
+
+# The SQL mode to be used for MySQL sessions. This option, including the
+# default, overrides any server-set SQL mode. To use whatever SQL mode is set
+# by the server configuration, set this to no value. Example: mysql_sql_mode=
+# (string value)
+#mysql_sql_mode = TRADITIONAL
+
+# Timeout before idle SQL connections are reaped. (integer value)
# Deprecated group/name - [DEFAULT]/sql_idle_timeout
# Deprecated group/name - [DATABASE]/sql_idle_timeout
# Deprecated group/name - [sql]/idle_timeout
-#idle_timeout=3600
-
-# Minimum number of SQL connections to keep open in a pool.
-# (integer value)
+#idle_timeout = 3600
+
+# Minimum number of SQL connections to keep open in a pool. (integer value)
# Deprecated group/name - [DEFAULT]/sql_min_pool_size
# Deprecated group/name - [DATABASE]/sql_min_pool_size
-#min_pool_size=1
-
-# Maximum number of SQL connections to keep open in a pool.
-# (integer value)
+#min_pool_size = 1
+
+# Maximum number of SQL connections to keep open in a pool. (integer value)
# Deprecated group/name - [DEFAULT]/sql_max_pool_size
# Deprecated group/name - [DATABASE]/sql_max_pool_size
-#max_pool_size=<None>
-
-# Maximum number of database connection retries during
-# startup. Set to -1 to specify an infinite retry count.
-# (integer value)
+#max_pool_size = <None>
+
+# Maximum number of database connection retries during startup. Set to -1 to
+# specify an infinite retry count. (integer value)
# Deprecated group/name - [DEFAULT]/sql_max_retries
# Deprecated group/name - [DATABASE]/sql_max_retries
-#max_retries=10
-
-# Interval between retries of opening a SQL connection.
-# (integer value)
+#max_retries = 10
+
+# Interval between retries of opening a SQL connection. (integer value)
# Deprecated group/name - [DEFAULT]/sql_retry_interval
# Deprecated group/name - [DATABASE]/reconnect_interval
-#retry_interval=10
-
-# If set, use this value for max_overflow with SQLAlchemy.
-# (integer value)
+#retry_interval = 10
+
+# If set, use this value for max_overflow with SQLAlchemy. (integer value)
# Deprecated group/name - [DEFAULT]/sql_max_overflow
# Deprecated group/name - [DATABASE]/sqlalchemy_max_overflow
-#max_overflow=<None>
-
-# Verbosity of SQL debugging information: 0=None,
-# 100=Everything. (integer value)
+#max_overflow = 50
+
+# Verbosity of SQL debugging information: 0=None, 100=Everything. (integer
+# value)
# Deprecated group/name - [DEFAULT]/sql_connection_debug
-#connection_debug=0
-
-# Add Python stack traces to SQL as comment strings. (boolean
-# value)
+#connection_debug = 0
+
+# Add Python stack traces to SQL as comment strings. (boolean value)
# Deprecated group/name - [DEFAULT]/sql_connection_trace
-#connection_trace=false
-
-# If set, use this value for pool_timeout with SQLAlchemy.
-# (integer value)
+#connection_trace = false
+
+# If set, use this value for pool_timeout with SQLAlchemy. (integer value)
# Deprecated group/name - [DATABASE]/sqlalchemy_pool_timeout
-#pool_timeout=<None>
-
-# Enable the experimental use of database reconnect on
-# connection lost. (boolean value)
-#use_db_reconnect=false
-
-# Seconds between retries of a database transaction. (integer
-# value)
-#db_retry_interval=1
-
-# If True, increases the interval between retries of a
-# database operation up to db_max_retry_interval. (boolean
+#pool_timeout = <None>
+
+# Enable the experimental use of database reconnect on connection lost.
+# (boolean value)
+#use_db_reconnect = false
+
+# Seconds between retries of a database transaction. (integer value)
+#db_retry_interval = 1
+
+# If True, increases the interval between retries of a database operation up to
+# db_max_retry_interval. (boolean value)
+#db_inc_retry_interval = true
+
+# If db_inc_retry_interval is set, the maximum seconds between retries of a
+# database operation. (integer value)
+#db_max_retry_interval = 10
+
+# Maximum retries in case of connection error or deadlock error before error is
+# raised. Set to -1 to specify an infinite retry count. (integer value)
+#db_max_retries = 20
+
+#
+# From 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)
+# Deprecated group/name - [DEFAULT]/db_backend
+#backend = sqlalchemy
+
+# The SQLAlchemy connection string to use to connect to the database. (string
# value)
-#db_inc_retry_interval=true
-
-# If db_inc_retry_interval is set, the maximum seconds between
-# retries of a database operation. (integer value)
-#db_max_retry_interval=10
-
-# Maximum retries in case of connection error or deadlock
-# error before error is raised. Set to -1 to specify an
-# infinite retry count. (integer value)
-#db_max_retries=20
-
-
-#
-# Options defined in oslo.db.concurrency
-#
-
-# Enable the experimental use of thread pooling for all DB API
-# calls (boolean value)
+# Deprecated group/name - [DEFAULT]/sql_connection
+# Deprecated group/name - [DATABASE]/sql_connection
+# Deprecated group/name - [sql]/connection
+#connection = <None>
+
+# The SQLAlchemy connection string to use to connect to the slave database.
+# (string value)
+#slave_connection = <None>
+
+# The SQL mode to be used for MySQL sessions. This option, including the
+# default, overrides any server-set SQL mode. To use whatever SQL mode is set
+# by the server configuration, set this to no value. Example: mysql_sql_mode=
+# (string value)
+#mysql_sql_mode = TRADITIONAL
+
+# Timeout before idle SQL connections are reaped. (integer value)
+# Deprecated group/name - [DEFAULT]/sql_idle_timeout
+# Deprecated group/name - [DATABASE]/sql_idle_timeout
+# Deprecated group/name - [sql]/idle_timeout
+#idle_timeout = 3600
+
+# Minimum number of SQL connections to keep open in a pool. (integer value)
+# Deprecated group/name - [DEFAULT]/sql_min_pool_size
+# Deprecated group/name - [DATABASE]/sql_min_pool_size
+#min_pool_size = 1
+
+# Maximum number of SQL connections to keep open in a pool. (integer value)
+# Deprecated group/name - [DEFAULT]/sql_max_pool_size
+# Deprecated group/name - [DATABASE]/sql_max_pool_size
+#max_pool_size = <None>
+
+# Maximum number of database connection retries during startup. Set to -1 to
+# specify an infinite retry count. (integer value)
+# Deprecated group/name - [DEFAULT]/sql_max_retries
+# Deprecated group/name - [DATABASE]/sql_max_retries
+#max_retries = 10
+
+# Interval between retries of opening a SQL connection. (integer value)
+# Deprecated group/name - [DEFAULT]/sql_retry_interval
+# Deprecated group/name - [DATABASE]/reconnect_interval
+#retry_interval = 10
+
+# If set, use this value for max_overflow with SQLAlchemy. (integer value)
+# Deprecated group/name - [DEFAULT]/sql_max_overflow
+# Deprecated group/name - [DATABASE]/sqlalchemy_max_overflow
+#max_overflow = 50
+
+# Verbosity of SQL debugging information: 0=None, 100=Everything. (integer
+# value)
+# Deprecated group/name - [DEFAULT]/sql_connection_debug
+#connection_debug = 0
+
+# Add Python stack traces to SQL as comment strings. (boolean value)
+# Deprecated group/name - [DEFAULT]/sql_connection_trace
+#connection_trace = false
+
+# If set, use this value for pool_timeout with SQLAlchemy. (integer value)
+# Deprecated group/name - [DATABASE]/sqlalchemy_pool_timeout
+#pool_timeout = <None>
+
+# Enable the experimental use of database reconnect on connection lost.
+# (boolean value)
+#use_db_reconnect = false
+
+# Seconds between retries of a database transaction. (integer value)
+#db_retry_interval = 1
+
+# If True, increases the interval between retries of a database operation up to
+# db_max_retry_interval. (boolean value)
+#db_inc_retry_interval = true
+
+# If db_inc_retry_interval is set, the maximum seconds between retries of a
+# database operation. (integer value)
+#db_max_retry_interval = 10
+
+# Maximum retries in case of connection error or deadlock error before error is
+# raised. Set to -1 to specify an infinite retry count. (integer value)
+#db_max_retries = 20
+
+#
+# From oslo.db.concurrency
+#
+
+# Enable the experimental use of thread pooling for all DB API calls (boolean
+# value)
# Deprecated group/name - [DEFAULT]/dbapi_use_tpool
-#use_tpool=false
-
-
-#
-# Options defined in nova.db.sqlalchemy.api
-#
-
-# The SQLAlchemy connection string to use to connect to the
-# slave database. (string value)
-#slave_connection=<None>
-
-# The SQL mode to be used for MySQL sessions. This option,
-# including the default, overrides any server-set SQL mode. To
-# use whatever SQL mode is set by the server configuration,
-# set this to no value. Example: mysql_sql_mode= (string
-# value)
-#mysql_sql_mode=TRADITIONAL
+#use_tpool = false
[ephemeral_storage_encryption]
#
-# Options defined in nova.compute.api
+# From nova.conf
#
# Whether to encrypt ephemeral storage (boolean value)
-#enabled=false
-
-# The cipher and mode to be used to encrypt ephemeral storage.
-# Which ciphers are available ciphers depends on kernel
-# support. See /proc/crypto for the list of available options.
-# (string value)
-#cipher=aes-xts-plain64
-
-# The bit length of the encryption key to be used to encrypt
-# ephemeral storage (in XTS mode only half of the bits are
-# used for encryption key) (integer value)
-#key_size=512
+#enabled = false
+
+# The cipher and mode to be used to encrypt ephemeral storage. Which ciphers
+# are available ciphers depends on kernel support. See /proc/crypto for the
+# list of available options. (string value)
+#cipher = aes-xts-plain64
+
+# The bit length of the encryption key to be used to encrypt ephemeral storage
+# (in XTS mode only half of the bits are used for encryption key) (integer
+# value)
+#key_size = 512
[glance]
#
-# Options defined in nova.image.glance
-#
-
-# Default glance hostname or IP address (string value)
-#host=$my_ip
-
-# Default glance port (integer value)
-#port=9292
-
-# Default protocol to use when connecting to glance. Set to
-# https for SSL. (string value)
-#protocol=http
-
-# A list of the glance api servers available to nova. Prefix
-# with https:// for ssl-based glance api servers.
-# ([hostname|ip]:port) (list value)
-#api_servers=<None>
-
-# Allow to perform insecure SSL (https) requests to glance
-# (boolean value)
-#api_insecure=false
-
-# Number of retries when uploading / downloading an image to /
-# from glance. (integer value)
-#num_retries=0
-
-# A list of url scheme that can be downloaded directly via the
-# direct_url. Currently supported schemes: [file]. (list
-# value)
-#allowed_direct_url_schemes=
+# From nova
+#
+
+# DEPRECATED: Glance server hostname or IP address. Use the "api_servers"
+# option instead. (string value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#host = $my_ip
+
+# DEPRECATED: Glance server port. Use the "api_servers" option instead.
+# (integer value)
+# Minimum value: 1
+# Maximum value: 65535
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#port = 9292
+
+# DEPRECATED: Protocol to use when connecting to glance. Set to https for SSL.
+# Use the "api_servers" option instead. (string value)
+# Allowed values: http, https
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#protocol = http
+
+#
+# A list of the glance api servers endpoints available to nova. These
+# should be fully qualified urls of the form
+# "scheme://hostname:port[/path]" (i.e. "http://10.0.1.0:9292" or
+# "https://my.glance.server/image") (list value)
+#api_servers = <None>
+
+# Allow to perform insecure SSL (https) requests to glance (boolean value)
+#api_insecure = false
+
+# Number of retries when uploading / downloading an image to / from glance.
+# (integer value)
+#num_retries = 0
+
+# A list of url scheme that can be downloaded directly via the direct_url.
+# Currently supported schemes: [file]. (list value)
+#allowed_direct_url_schemes =
+
+# Require Nova to perform signature verification on each image downloaded from
+# Glance. (boolean value)
+#verify_glance_signatures = false
[guestfs]
#
-# Options defined in nova.virt.disk.vfs.guestfs
+# From nova.virt
#
# Enable guestfs debug (boolean value)
-#debug=false
-
-
-[hyperv]
-
-#
-# Options defined in nova.virt.hyperv.pathutils
-#
-
-# The name of a Windows share name mapped to the
-# "instances_path" dir and used by the resize feature to copy
-# files to the target host. If left blank, an administrative
-# share will be used, looking for the same "instances_path"
-# used locally (string value)
-#instances_path_share=
-
-
-#
-# Options defined in nova.virt.hyperv.utilsfactory
-#
-
-# Force V1 WMI utility classes (boolean value)
-#force_hyperv_utils_v1=false
-
-# Force V1 volume utility class (boolean value)
-#force_volumeutils_v1=false
-
-
-#
-# Options defined in nova.virt.hyperv.vif
-#
-
-# External virtual switch Name, if not provided, the first
-# external virtual switch is used (string value)
-#vswitch_name=<None>
-
-
-#
-# Options defined in nova.virt.hyperv.vmops
-#
-
-# Required for live migration among hosts with different CPU
-# features (boolean value)
-#limit_cpu_features=false
-
-# Sets the admin password in the config drive image (boolean
-# value)
-#config_drive_inject_password=false
-
-# Path of qemu-img command which is used to convert between
-# different image types (string value)
-#qemu_img_cmd=qemu-img.exe
-
-# Attaches the Config Drive image as a cdrom drive instead of
-# a disk drive (boolean value)
-#config_drive_cdrom=false
-
-# Enables metrics collections for an instance by using
-# Hyper-V's metric APIs. Collected data can by retrieved by
-# other apps and services, e.g.: Ceilometer. Requires Hyper-V
-# / Windows Server 2012 and above (boolean value)
-#enable_instance_metrics_collection=false
-
-# Enables dynamic memory allocation (ballooning) when set to a
-# value greater than 1. The value expresses the ratio between
-# the total RAM assigned to an instance and its startup RAM
-# amount. For example a ratio of 2.0 for an instance with
-# 1024MB of RAM implies 512MB of RAM allocated at startup
-# (floating point value)
-#dynamic_memory_ratio=1.0
-
-# Number of seconds to wait for instance to shut down after
-# soft reboot request is made. We fall back to hard reboot if
-# instance does not shutdown within this window. (integer
-# value)
-#wait_soft_reboot_seconds=60
-
-
-#
-# Options defined in nova.virt.hyperv.volumeops
-#
-
-# The number of times to retry to attach a volume (integer
-# value)
-#volume_attach_retry_count=10
-
-# Interval between volume attachment attempts, in seconds
-# (integer value)
-#volume_attach_retry_interval=5
-
-# The number of times to retry checking for a disk mounted via
-# iSCSI. (integer value)
-#mounted_disk_query_retry_count=10
-
-# Interval between checks for a mounted iSCSI disk, in
-# seconds. (integer value)
-#mounted_disk_query_retry_interval=5
+#debug = false
[image_file_url]
#
-# Options defined in nova.image.download.file
+# From nova
#
# List of file systems that are configured in this file in the
# image_file_url:<list entry name> sections (list value)
-#filesystems=
+#filesystems =
[ironic]
#
-# Options defined in nova.virt.ironic.driver
-#
-
-# Version of Ironic API service endpoint. (integer value)
-#api_version=1
+# From nova.conf
+#
+
+# Version of Ironic API service endpoint. DEPRECATED: Setting the API version
+# is not possible anymore. (integer value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#api_version = 1
# URL for Ironic API endpoint. (string value)
-#api_endpoint=<None>
+#api_endpoint = <None>
# Ironic keystone admin name (string value)
-#admin_username=<None>
+#admin_username = %SERVICE_USER%
# Ironic keystone admin password. (string value)
-#admin_password=<None>
-
-# Ironic keystone auth token. (string value)
-#admin_auth_token=<None>
+#admin_password = %SERVICE_PASSWORD%
+
+# Ironic keystone auth token.DEPRECATED: use admin_username, admin_password,
+# and admin_tenant_name instead (string value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#admin_auth_token = <None>
# Keystone public API endpoint. (string value)
-#admin_url=<None>
-
-# Log level override for ironicclient. Set this in order to
-# override the global "default_log_levels", "verbose", and
-# "debug" settings. DEPRECATED: use standard logging
-# configuration. (string value)
-#client_log_level=<None>
+#admin_url = http://127.0.0.1:5000/v2.0/
+
+# Log level override for ironicclient. Set this in order to override the global
+# "default_log_levels", "verbose", and "debug" settings. DEPRECATED: use
+# standard logging configuration. (string value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#client_log_level = <None>
# Ironic keystone tenant name. (string value)
-#admin_tenant_name=<None>
-
-# How many retries when a request does conflict. (integer
-# value)
-#api_max_retries=60
-
-# How often to retry in seconds when a request does conflict
-# (integer value)
-#api_retry_interval=2
+#admin_tenant_name = %SERVICE_TENANT_NAME%
+
+# How many retries when a request does conflict. If <= 0, only try once, no
+# retries. (integer value)
+#api_max_retries = 60
+
+# How often to retry in seconds when a request does conflict (integer value)
+#api_retry_interval = 2
+
+
+[key_manager]
+
+#
+# From castellan.config
+#
+
+# The full class name of the key manager API class (string value)
+#api_class = castellan.key_manager.barbican_key_manager.BarbicanKeyManager
+
+# The type of authentication credential to create. Possible values are 'token',
+# 'password', 'keystone_token', and 'keystone_password'. Required if no context
+# is passed to the credential factory. (string value)
+#auth_type = <None>
+
+# Token for authentication. Required for 'token' and 'keystone_token' auth_type
+# if no context is passed to the credential factory. (string value)
+#token = <None>
+
+# Username for authentication. Required for 'password' auth_type. Optional for
+# the 'keystone_password' auth_type. (string value)
+#username = <None>
+
+# Password for authentication. Required for 'password' and 'keystone_password'
+# auth_type. (string value)
+#password = <None>
+
+# User ID for authentication. Optional for 'keystone_token' and
+# 'keystone_password' auth_type. (string value)
+#user_id = <None>
+
+# User's domain ID for authentication. Optional for 'keystone_token' and
+# 'keystone_password' auth_type. (string value)
+#user_domain_id = <None>
+
+# User's domain name for authentication. Optional for 'keystone_token' and
+# 'keystone_password' auth_type. (string value)
+#user_domain_name = <None>
+
+# Trust ID for trust scoping. Optional for 'keystone_token' and
+# 'keystone_password' auth_type. (string value)
+#trust_id = <None>
+
+# Domain ID for domain scoping. Optional for 'keystone_token' and
+# 'keystone_password' auth_type. (string value)
+#domain_id = <None>
+
+# Domain name for domain scoping. Optional for 'keystone_token' and
+# 'keystone_password' auth_type. (string value)
+#domain_name = <None>
+
+# Project ID for project scoping. Optional for 'keystone_token' and
+# 'keystone_password' auth_type. (string value)
+#project_id = <None>
+
+# Project name for project scoping. Optional for 'keystone_token' and
+# 'keystone_password' auth_type. (string value)
+#project_name = <None>
+
+# Project's domain ID for project. Optional for 'keystone_token' and
+# 'keystone_password' auth_type. (string value)
+#project_domain_id = <None>
+
+# Project's domain name for project. Optional for 'keystone_token' and
+# 'keystone_password' auth_type. (string value)
+#project_domain_name = <None>
+
+# Allow fetching a new token if the current one is going to expire. Optional
+# for 'keystone_token' and 'keystone_password' auth_type. (boolean value)
+#reauthenticate = true
[keymgr]
#
-# Options defined in nova.keymgr
-#
-
-# The full class name of the key manager API class (string
-# value)
-#api_class=nova.keymgr.conf_key_mgr.ConfKeyManager
-
-
-#
-# Options defined in nova.keymgr.conf_key_mgr
-#
-
-# Fixed key returned by key manager, specified in hex (string
-# value)
-#fixed_key=<None>
+# From nova
+#
+
+# Fixed key returned by key manager, specified in hex (string value)
+#fixed_key = <None>
+
+# The full class name of the key manager API class (string value)
+#api_class = nova.keymgr.conf_key_mgr.ConfKeyManager
[keystone_authtoken]
#
-# Options defined in keystonemiddleware.auth_token
+# From keystonemiddleware.auth_token
#
# Complete public Identity API endpoint. (string value)
-auth_uri=http://127.0.0.1:5000/v2.0/
-
-# API version of the admin Identity API endpoint. (string
+auth_uri = http://127.0.0.1:5000/v2.0/
+
+# API version of the admin Identity API endpoint. (string value)
+#auth_version = <None>
+
+# Do not handle authorization requests within the middleware, but delegate the
+# authorization decision to downstream WSGI components. (boolean value)
+#delay_auth_decision = false
+
+# Request timeout value for communicating with Identity API server. (integer
# value)
-#auth_version=<None>
-
-# Do not handle authorization requests within the middleware,
-# but delegate the authorization decision to downstream WSGI
-# components. (boolean value)
-#delay_auth_decision=false
-
-# Request timeout value for communicating with Identity API
-# server. (integer value)
-#http_connect_timeout=<None>
-
-# How many times are we trying to reconnect when communicating
-# with Identity API Server. (integer value)
-#http_request_max_retries=3
+#http_connect_timeout = <None>
+
+# How many times are we trying to reconnect when communicating with Identity
+# API Server. (integer value)
+#http_request_max_retries = 3
# Env key for the swift cache. (string value)
-#cache=<None>
-
-# Required if identity server requires client certificate
-# (string value)
-#certfile=<None>
-
-# Required if identity server requires client certificate
-# (string value)
-#keyfile=<None>
-
-# A PEM encoded Certificate Authority to use when verifying
-# HTTPs connections. Defaults to system CAs. (string value)
-#cafile=<None>
+#cache = <None>
+
+# Required if identity server requires client certificate (string value)
+#certfile = <None>
+
+# Required if identity server requires client certificate (string value)
+#keyfile = <None>
+
+# A PEM encoded Certificate Authority to use when verifying HTTPs connections.
+# Defaults to system CAs. (string value)
+#cafile = <None>
# Verify HTTPS connections. (boolean value)
-#insecure=false
-
-# Directory used to cache files related to PKI tokens. (string
-# value)
-signing_dir=$state_path/keystone-signing
-
-# Optionally specify a list of memcached server(s) to use for
-# caching. If left undefined, tokens will instead be cached
-# in-process. (list value)
+#insecure = false
+
+# The region in which the identity server can be found. (string value)
+#region_name = <None>
+
+# Directory used to cache files related to PKI tokens. (string value)
+signing_dir = $state_path/keystone-signing
+
+# 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
-#memcached_servers=<None>
-
-# In order to prevent excessive effort spent validating
-# tokens, the middleware caches previously-seen tokens for a
-# configurable duration (in seconds). Set to -1 to disable
-# caching completely. (integer value)
-#token_cache_time=300
-
-# Determines the frequency at which the list of revoked tokens
-# is retrieved from the Identity service (in seconds). A high
-# number of revocation events combined with a low cache
-# duration may significantly reduce performance. (integer
-# value)
-#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
+#memcached_servers = <None>
+
+# In order to prevent excessive effort spent validating tokens, the middleware
+# caches previously-seen tokens for a configurable duration (in seconds). Set
+# to -1 to disable caching completely. (integer value)
+#token_cache_time = 300
+
+# Determines the frequency at which the list of revoked tokens is retrieved
+# from the Identity service (in seconds). A high number of revocation events
+# combined with a low cache duration may significantly reduce performance.
+# (integer value)
+#revocation_cache_time = 10
+
+# (Optional) If defined, indicate whether token data should be 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)
-#memcache_security_strategy=<None>
-
-# (Optional, mandatory if memcache_security_strategy is
-# defined) This string is used for key derivation. (string
-# value)
-#memcache_secret_key=<None>
-
-# (Optional) Number of seconds memcached server is considered
-# dead before it is tried again. (integer value)
-#memcache_pool_dead_retry=300
-
-# (Optional) Maximum total number of open connections to every
-# memcached server. (integer value)
-#memcache_pool_maxsize=10
-
-# (Optional) Socket timeout in seconds for communicating with
-# a memcache server. (integer value)
-#memcache_pool_socket_timeout=3
-
-# (Optional) Number of seconds a connection to memcached is
-# held unused in the pool before it is closed. (integer value)
-#memcache_pool_unused_timeout=60
-
-# (Optional) Number of seconds that an operation will wait to
-# get a memcache client connection from the pool. (integer
-# value)
-#memcache_pool_conn_get_timeout=10
-
-# (Optional) Use the advanced (eventlet safe) memcache client
-# pool. The advanced pool will only work under python 2.x.
-# (boolean value)
-#memcache_use_advanced_pool=false
-
-# (Optional) Indicate whether to set the X-Service-Catalog
-# header. If False, middleware will not ask for service
-# catalog on token validation and will not set the X-Service-
-# Catalog header. (boolean value)
-#include_service_catalog=true
-
-# Used to control the use and type of token binding. Can be
-# set to: "disabled" to not check token binding. "permissive"
-# (default) to validate binding information if the bind type
-# is of a form known to the server and ignore it if not.
-# "strict" like "permissive" but if the bind type is unknown
-# the token will be rejected. "required" any form of token
-# binding is needed to be allowed. Finally the name of a
-# binding method that must be present in tokens. (string
-# value)
-#enforce_token_bind=permissive
-
-# If true, the revocation list will be checked for cached
-# tokens. This requires that PKI tokens are configured on the
-# identity server. (boolean value)
-#check_revocations_for_cached=false
-
-# Hash algorithms to use for hashing PKI tokens. This may be a
-# single algorithm or multiple. The algorithms are those
-# supported by Python standard hashlib.new(). The hashes will
-# be tried in the order given, so put the preferred one first
-# for performance. The result of the first hash will be stored
-# in the cache. This will typically be set to multiple values
-# only while migrating from a less secure algorithm to a more
-# secure one. Once all the old tokens are expired this option
-# should be set to a single value for better performance.
-# (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/
+# Allowed values: None, MAC, ENCRYPT
+#memcache_security_strategy = None
+
+# (Optional, mandatory if memcache_security_strategy is defined) This string is
+# used for key derivation. (string value)
+#memcache_secret_key = <None>
+
+# (Optional) Number of seconds memcached server is considered dead before it is
+# tried again. (integer value)
+#memcache_pool_dead_retry = 300
+
+# (Optional) Maximum total number of open connections to every memcached
+# server. (integer value)
+#memcache_pool_maxsize = 10
+
+# (Optional) Socket timeout in seconds for communicating with a memcached
+# server. (integer value)
+#memcache_pool_socket_timeout = 3
+
+# (Optional) Number of seconds a connection to memcached is held unused in the
+# pool before it is closed. (integer value)
+#memcache_pool_unused_timeout = 60
+
+# (Optional) Number of seconds that an operation will wait to get a memcached
+# client connection from the pool. (integer value)
+#memcache_pool_conn_get_timeout = 10
+
+# (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
+
+# (Optional) Indicate whether to set the X-Service-Catalog header. If False,
+# middleware will not ask for service catalog on token validation and will not
+# set the X-Service-Catalog header. (boolean value)
+#include_service_catalog = true
+
+# Used to control the use and type of token binding. Can be set to: "disabled"
+# to not check token binding. "permissive" (default) to validate binding
+# information if the bind type is of a form known to the server and ignore it
+# if not. "strict" like "permissive" but if the bind type is unknown the token
+# will be rejected. "required" any form of token binding is needed to be
+# allowed. Finally the name of a binding method that must be present in tokens.
# (string value)
-identity_uri=http://127.0.0.1:35357/
-
-# 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=<None>
+#enforce_token_bind = permissive
+
+# If true, the revocation list will be checked for cached tokens. This requires
+# that PKI tokens are configured on the identity server. (boolean value)
+#check_revocations_for_cached = false
+
+# Hash algorithms to use for hashing PKI tokens. This may be a single algorithm
+# or multiple. The algorithms are those supported by Python standard
+# hashlib.new(). The hashes will be tried in the order given, so put the
+# preferred one first for performance. The result of the first hash will be
+# stored in the cache. This will typically be set to multiple values only while
+# migrating from a less secure algorithm to a more secure one. Once all the old
+# tokens are expired this option should be set to a single value for better
+# performance. (list value)
+#hash_algorithms = md5
+
+# Authentication type to load (unknown value)
+# Deprecated group/name - [DEFAULT]/auth_plugin
+#auth_type = <None>
+
+# Config Section from which to load plugin specific options (unknown value)
+#auth_section = <None>
+
+# 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=<None>
-
-# Config Section from which to load plugin specific options
-# (string value)
-#auth_section=<None>
+admin_tenant_name = %SERVICE_TENANT_NAME%
[libvirt]
#
-# Options defined in nova.virt.libvirt.driver
-#
-
-# Rescue ami image. This will not be used if an image id is
-# provided by the user. (string value)
-#rescue_image_id=<None>
+# From nova.virt
+#
+
+# Rescue ami image. This will not be used if an image id is provided by the
+# user. (string value)
+#rescue_image_id = <None>
# Rescue aki image (string value)
-#rescue_kernel_id=<None>
+#rescue_kernel_id = <None>
# Rescue ari image (string value)
-#rescue_ramdisk_id=<None>
-
-# Libvirt domain type (valid options are: kvm, lxc, qemu, uml,
-# xen and parallels) (string value)
-#virt_type=kvm
-
-# Override the default libvirt URI (which is dependent on
-# virt_type) (string value)
-#connection_uri=
-
-# Inject the admin password at boot time, without an agent.
-# (boolean value)
-#inject_password=false
+#rescue_ramdisk_id = <None>
+
+# Libvirt domain type (string value)
+# Allowed values: kvm, lxc, qemu, uml, xen, parallels
+#virt_type = kvm
+
+# Override the default libvirt URI (which is dependent on virt_type) (string
+# value)
+#connection_uri =
+
+# Inject the admin password at boot time, without an agent. (boolean value)
+#inject_password = false
# Inject the ssh public key at boot time (boolean value)
-#inject_key=false
-
-# The partition to inject to : -2 => disable, -1 => inspect
-# (libguestfs only), 0 => not partitioned, >0 => partition
-# number (integer value)
-#inject_partition=-2
-
-# Sync virtual and real mouse cursors in Windows VMs (boolean
-# value)
-#use_usb_tablet=true
-
-# Migration target URI (any included "%s" is replaced with the
-# migration target hostname) (string value)
-#live_migration_uri=qemu+tcp://%s/system
+#inject_key = false
+
+# The partition to inject to : -2 => disable, -1 => inspect (libguestfs only),
+# 0 => not partitioned, >0 => partition number (integer value)
+#inject_partition = -2
+
+# Sync virtual and real mouse cursors in Windows VMs (boolean value)
+#use_usb_tablet = true
+
+# Live migration target ip or hostname (if this option is set to None, which is
+# the default, the hostname of the migration target compute node will be used)
+# (string value)
+#live_migration_inbound_addr = <None>
+
+# Override the default libvirt live migration target URI (which is dependent on
+# virt_type) (any included "%s" is replaced with the migration target hostname)
+# (string value)
+#live_migration_uri = <None>
# Migration flags to be set for live migration (string value)
-#live_migration_flag=VIR_MIGRATE_UNDEFINE_SOURCE, VIR_MIGRATE_PEER2PEER, VIR_MIGRATE_LIVE, VIR_MIGRATE_TUNNELLED
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+# Reason: The correct live migration flags can be inferred from the new
+# live_migration_tunnelled config option. live_migration_flag will be removed
+# to avoid potential misconfiguration.
+#live_migration_flag = VIR_MIGRATE_UNDEFINE_SOURCE, VIR_MIGRATE_PEER2PEER, VIR_MIGRATE_LIVE, VIR_MIGRATE_TUNNELLED
# Migration flags to be set for block migration (string value)
-#block_migration_flag=VIR_MIGRATE_UNDEFINE_SOURCE, VIR_MIGRATE_PEER2PEER, VIR_MIGRATE_LIVE, VIR_MIGRATE_TUNNELLED, VIR_MIGRATE_NON_SHARED_INC
-
-# Maximum bandwidth to be used during migration, in Mbps
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+# Reason: The correct block migration flags can be inferred from the new
+# live_migration_tunnelled config option. block_migration_flag will be removed
+# to avoid potential misconfiguration.
+#block_migration_flag = VIR_MIGRATE_UNDEFINE_SOURCE, VIR_MIGRATE_PEER2PEER, VIR_MIGRATE_LIVE, VIR_MIGRATE_TUNNELLED, VIR_MIGRATE_NON_SHARED_INC
+
+# Whether to use tunnelled migration, where migration data is transported over
+# the libvirtd connection. If True, we use the VIR_MIGRATE_TUNNELLED migration
+# flag, avoiding the need to configure the network to allow direct hypervisor
+# to hypervisor communication. If False, use the native transport. If not set,
+# Nova will choose a sensible default based on, for example the availability of
+# native encryption support in the hypervisor. (boolean value)
+#live_migration_tunnelled = <None>
+
+# Maximum bandwidth(in MiB/s) to be used during migration. If set to 0, will
+# choose a suitable default. Some hypervisors do not support this feature and
+# will return an error if bandwidth is not 0. Please refer to the libvirt
+# documentation for further details (integer value)
+#live_migration_bandwidth = 0
+
+# Maximum permitted downtime, in milliseconds, for live migration switchover.
+# Will be rounded up to a minimum of 100ms. Use a large value if guest liveness
+# is unimportant. (integer value)
+#live_migration_downtime = 500
+
+# Number of incremental steps to reach max downtime value. Will be rounded up
+# to a minimum of 3 steps (integer value)
+#live_migration_downtime_steps = 10
+
+# Time to wait, in seconds, between each step increase of the migration
+# downtime. Minimum delay is 10 seconds. Value is per GiB of guest RAM + disk
+# to be transferred, with lower bound of a minimum of 2 GiB per device (integer
+# value)
+#live_migration_downtime_delay = 75
+
+# Time to wait, in seconds, for migration to successfully complete transferring
+# data before aborting the operation. Value is per GiB of guest RAM + disk to
+# be transferred, with lower bound of a minimum of 2 GiB. Should usually be
+# larger than downtime delay * downtime steps. Set to 0 to disable timeouts.
# (integer value)
-#live_migration_bandwidth=0
-
-# Snapshot image format (valid options are : raw, qcow2, vmdk,
-# vdi). Defaults to same as source image (string value)
-#snapshot_image_format=<None>
-
-# Override the default disk prefix for the devices attached to
-# a server, which is dependent on virt_type. (valid options
-# are: sd, xvd, uvd, vd) (string value)
-#disk_prefix=<None>
-
-# Number of seconds to wait for instance to shut down after
-# soft reboot request is made. We fall back to hard reboot if
-# instance does not shutdown within this window. (integer
+#live_migration_completion_timeout = 800
+
+# Time to wait, in seconds, for migration to make forward progress in
+# transferring data before aborting the operation. Set to 0 to disable
+# timeouts. (integer value)
+#live_migration_progress_timeout = 150
+
+# Snapshot image format. Defaults to same as source image (string value)
+# Allowed values: raw, qcow2, vmdk, vdi
+#snapshot_image_format = <None>
+
+# Override the default disk prefix for the devices attached to a server, which
+# is dependent on virt_type. (valid options are: sd, xvd, uvd, vd) (string
# value)
-#wait_soft_reboot_seconds=120
-
-# Set to "host-model" to clone the host CPU feature flags; to
-# "host-passthrough" to use the host CPU model exactly; to
-# "custom" to use a named CPU model; to "none" to not set any
-# CPU model. If virt_type="kvm|qemu", it will default to
-# "host-model", otherwise it will default to "none" (string
+#disk_prefix = <None>
+
+# Number of seconds to wait for instance to shut down after soft reboot request
+# is made. We fall back to hard reboot if instance does not shutdown within
+# this window. (integer value)
+#wait_soft_reboot_seconds = 120
+
+# Set to "host-model" to clone the host CPU feature flags; to "host-
+# passthrough" to use the host CPU model exactly; to "custom" to use a named
+# CPU model; to "none" to not set any CPU model. If virt_type="kvm|qemu", it
+# will default to "host-model", otherwise it will default to "none" (string
# value)
-#cpu_mode=<None>
+# Allowed values: host-model, host-passthrough, custom, none
+#cpu_mode = <None>
# Set to a named libvirt CPU model (see names listed in
-# /usr/share/libvirt/cpu_map.xml). Only has effect if
-# cpu_mode="custom" and virt_type="kvm|qemu" (string value)
-#cpu_model=<None>
-
-# Location where libvirt driver will store snapshots before
-# uploading them to image service (string value)
-#snapshots_directory=$instances_path/snapshots
+# /usr/share/libvirt/cpu_map.xml). Only has effect if cpu_mode="custom" and
+# virt_type="kvm|qemu" (string value)
+#cpu_model = <None>
+
+# Location where libvirt driver will store snapshots before uploading them to
+# image service (string value)
+#snapshots_directory = $instances_path/snapshots
# Location where the Xen hvmloader is kept (string value)
-#xen_hvmloader_path=/usr/lib/xen/boot/hvmloader
+#xen_hvmloader_path = /usr/lib/xen/boot/hvmloader
# Specific cachemodes to use for different disk types e.g:
# file=directsync,block=none (list value)
-#disk_cachemodes=
-
-# A path to a device that will be used as source of entropy on
-# the host. Permitted options are: /dev/random or /dev/hwrng
-# (string value)
-#rng_dev_path=<None>
-
-# For qemu or KVM guests, set this option to specify a default
-# machine type per host architecture. You can find a list of
-# supported machine types in your environment by checking the
-# output of the "virsh capabilities"command. The format of the
-# value for this config option is host-arch=machine-type. For
-# example: x86_64=machinetype1,armv7l=machinetype2 (list
-# value)
-#hw_machine_type=<None>
-
-# The data source used to the populate the host "serial" UUID
-# exposed to guest in the virtual BIOS. Permitted options are
-# "hardware", "os", "none" or "auto" (default). (string value)
-#sysinfo_serial=auto
-
-# A number of seconds to memory usage statistics period. Zero
-# or negative value mean to disable memory usage statistics.
-# (integer value)
-#mem_stats_period_seconds=10
-
-# List of uid targets and ranges.Syntax is guest-uid:host-
-# uid:countMaximum of 5 allowed. (list value)
-#uid_maps=
-
-# List of guid targets and ranges.Syntax is guest-gid:host-
-# gid:countMaximum of 5 allowed. (list value)
-#gid_maps=
-
-
-#
-# Options defined in nova.virt.libvirt.imagebackend
-#
-
-# VM Images format. Acceptable values are: raw, qcow2, lvm,
-# rbd, default. If default is specified, then use_cow_images
-# flag is used instead of this one. (string value)
-#images_type=default
-
-# LVM Volume Group that is used for VM images, when you
-# specify images_type=lvm. (string value)
-#images_volume_group=<None>
-
-# Create sparse logical volumes (with virtualsize) if this
-# flag is set to True. (boolean value)
-#sparse_logical_volumes=false
-
-# The RADOS pool in which rbd volumes are stored (string
-# value)
-#images_rbd_pool=rbd
+#disk_cachemodes =
+
+# A path to a device that will be used as source of entropy on the host.
+# Permitted options are: /dev/random or /dev/hwrng (string value)
+#rng_dev_path = <None>
+
+# For qemu or KVM guests, set this option to specify a default machine type per
+# host architecture. You can find a list of supported machine types in your
+# environment by checking the output of the "virsh capabilities"command. The
+# format of the value for this config option is host-arch=machine-type. For
+# example: x86_64=machinetype1,armv7l=machinetype2 (list value)
+#hw_machine_type = <None>
+
+# The data source used to the populate the host "serial" UUID exposed to guest
+# in the virtual BIOS. (string value)
+# Allowed values: none, os, hardware, auto
+#sysinfo_serial = auto
+
+# A number of seconds to memory usage statistics period. Zero or negative value
+# mean to disable memory usage statistics. (integer value)
+#mem_stats_period_seconds = 10
+
+# List of uid targets and ranges.Syntax is guest-uid:host-uid:countMaximum of 5
+# allowed. (list value)
+#uid_maps =
+
+# List of guid targets and ranges.Syntax is guest-gid:host-gid:countMaximum of
+# 5 allowed. (list value)
+#gid_maps =
+
+# In a realtime host context vCPUs for guest will run in that scheduling
+# priority. Priority depends on the host kernel (usually 1-99) (integer value)
+#realtime_scheduler_priority = 1
+
+# VM Images format. If default is specified, then use_cow_images flag is used
+# instead of this one. (string value)
+# Allowed values: raw, qcow2, lvm, rbd, ploop, default
+#images_type = default
+
+# LVM Volume Group that is used for VM images, when you specify
+# images_type=lvm. (string value)
+#images_volume_group = <None>
+
+# Create sparse logical volumes (with virtualsize) if this flag is set to True.
+# (boolean value)
+#sparse_logical_volumes = false
+
+# The RADOS pool in which rbd volumes are stored (string value)
+#images_rbd_pool = rbd
# Path to the ceph configuration file to use (string value)
-#images_rbd_ceph_conf=
-
-# Discard option for nova managed disks (valid options are:
-# ignore, unmap). Need Libvirt(1.0.6) Qemu1.5 (raw format)
-# Qemu1.6(qcow2 format) (string value)
-#hw_disk_discard=<None>
-
-
-#
-# Options defined in nova.virt.libvirt.imagecache
-#
-
-# Allows image information files to be stored in non-standard
-# locations (string value)
-#image_info_filename_pattern=$instances_path/$image_cache_subdirectory_name/%(image)s.info
-
-# Should unused kernel images be removed? This is only safe to
-# enable if all compute nodes have been updated to support
-# this option. This will be enabled by default in future.
-# (boolean value)
-#remove_unused_kernels=false
-
-# Unused resized base images younger than this will not be
-# removed (integer value)
-#remove_unused_resized_minimum_age_seconds=3600
+#images_rbd_ceph_conf =
+
+# Discard option for nova managed disks. Need Libvirt(1.0.6) Qemu1.5 (raw
+# format) Qemu1.6(qcow2 format) (string value)
+# Allowed values: ignore, unmap
+#hw_disk_discard = <None>
+
+# Allows image information files to be stored in non-standard locations (string
+# value)
+#image_info_filename_pattern = $instances_path/$image_cache_subdirectory_name/%(image)s.info
+
+# DEPRECATED: Should unused kernel images be removed? This is only safe to
+# enable if all compute nodes have been updated to support this option (running
+# Grizzly or newer level compute). This will be the default behavior in the
+# 13.0.0 release. (boolean value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#remove_unused_kernels = true
+
+# Unused resized base images younger than this will not be removed (integer
+# value)
+#remove_unused_resized_minimum_age_seconds = 3600
# Write a checksum for files in _base to disk (boolean value)
-#checksum_base_images=false
+#checksum_base_images = false
# How frequently to checksum base images (integer value)
-#checksum_interval_seconds=3600
-
-
-#
-# Options defined in nova.virt.libvirt.lvm
-#
-
-# Method used to wipe old volumes (valid options are: none,
-# zero, shred) (string value)
-#volume_clear=zero
-
-# Size in MiB to wipe at start of old volumes. 0 => all
-# (integer value)
-#volume_clear_size=0
-
-
-#
-# Options defined in nova.virt.libvirt.utils
-#
-
-# Compress snapshot images when possible. This currently
-# applies exclusively to qcow2 images (boolean value)
-#snapshot_compression=false
-
-
-#
-# Options defined in nova.virt.libvirt.vif
-#
-
-# Use virtio for bridge interfaces with KVM/QEMU (boolean
+#checksum_interval_seconds = 3600
+
+# Method used to wipe old volumes. (string value)
+# Allowed values: none, zero, shred
+#volume_clear = zero
+
+# Size in MiB to wipe at start of old volumes. 0 => all (integer value)
+#volume_clear_size = 0
+
+# Compress snapshot images when possible. This currently applies exclusively to
+# qcow2 images (boolean value)
+#snapshot_compression = false
+
+# Use virtio for bridge interfaces with KVM/QEMU (boolean value)
+#use_virtio_for_bridges = true
+
+# Protocols listed here will be accessed directly from QEMU. Currently
+# supported protocols: [gluster] (list value)
+#qemu_allowed_storage_drivers =
+
+# Number of times to rediscover AoE target to find volume (integer value)
+#num_aoe_discover_tries = 3
+
+# Directory where the glusterfs volume is mounted on the compute node (string
# value)
-#use_virtio_for_bridges=true
-
-
-#
-# Options defined in nova.virt.libvirt.volume
-#
-
-# Number of times to rescan iSCSI target to find volume
-# (integer value)
-#num_iscsi_scan_tries=5
-
-# Number of times to rescan iSER target to find volume
-# (integer value)
-#num_iser_scan_tries=5
-
-# The RADOS client name for accessing rbd volumes (string
-# value)
-#rbd_user=<None>
-
-# The libvirt UUID of the secret for the rbd_uservolumes
-# (string value)
-#rbd_secret_uuid=<None>
-
-# Directory where the NFS volume is mounted on the compute
-# node (string value)
-#nfs_mount_point_base=$state_path/mnt
-
-# Mount options passed to the NFS client. See section of the
-# nfs man page for details (string value)
-#nfs_mount_options=<None>
-
-# Directory where the SMBFS shares are mounted on the compute
-# node (string value)
-#smbfs_mount_point_base=$state_path/mnt
-
-# Mount options passed to the SMBFS client. See mount.cifs man
-# page for details. Note that the libvirt-qemu uid and gid
-# must be specified. (string value)
-#smbfs_mount_options=
-
-# Number of times to rediscover AoE target to find volume
-# (integer value)
-#num_aoe_discover_tries=3
-
-# Directory where the glusterfs volume is mounted on the
-# compute node (string value)
-#glusterfs_mount_point_base=$state_path/mnt
-
-# Use multipath connection of the iSCSI volume (boolean value)
-#iscsi_use_multipath=false
+#glusterfs_mount_point_base = $state_path/mnt
+
+# Number of times to rescan iSCSI target to find volume (integer value)
+#num_iscsi_scan_tries = 5
+
+# Use multipath connection of the iSCSI or FC volume (boolean value)
+#iscsi_use_multipath = false
+
+# The iSCSI transport iface to use to connect to target in case offload support
+# is desired. Default format is of the form <transport_name>.<hwaddress> where
+# <transport_name> is one of (be2iscsi, bnx2i, cxgb3i, cxgb4i, qla4xxx, ocs)
+# and <hwaddress> is the MAC address of the interface and can be generated via
+# the iscsiadm -m iface command. Do not confuse the iscsi_iface parameter to be
+# provided here with the actual transport name. (string value)
+# Deprecated group/name - [DEFAULT]/iscsi_transport
+#iscsi_iface = <None>
+
+# Number of times to rescan iSER target to find volume (integer value)
+#num_iser_scan_tries = 5
# Use multipath connection of the iSER volume (boolean value)
-#iser_use_multipath=false
-
-# Path or URL to Scality SOFS configuration file (string
+#iser_use_multipath = false
+
+# The RADOS client name for accessing rbd volumes (string value)
+#rbd_user = <None>
+
+# The libvirt UUID of the secret for the rbd_uservolumes (string value)
+#rbd_secret_uuid = <None>
+
+# Directory where the NFS volume is mounted on the compute node (string value)
+#nfs_mount_point_base = $state_path/mnt
+
+# Mount options passed to the NFS client. See section of the nfs man page for
+# details (string value)
+#nfs_mount_options = <None>
+
+# Directory where the Quobyte volume is mounted on the compute node (string
# value)
-#scality_sofs_config=<None>
+#quobyte_mount_point_base = $state_path/mnt
+
+# Path to a Quobyte Client configuration file. (string value)
+#quobyte_client_cfg = <None>
+
+# Use ssh or rsync transport for creating, copying, removing files on the
+# remote host. (string value)
+# Allowed values: ssh, rsync
+#remote_filesystem_transport = ssh
+
+# Path or URL to Scality SOFS configuration file (string value)
+#scality_sofs_config = <None>
# Base dir where Scality SOFS shall be mounted (string value)
-#scality_sofs_mount_point=$state_path/scality
-
-# Protocols listed here will be accessed directly from QEMU.
-# Currently supported protocols: [gluster] (list value)
-#qemu_allowed_storage_drivers=
-
-# Directory where the Quobyte volume is mounted on the compute
-# node (string value)
-#quobyte_mount_point_base=$state_path/mnt
-
-# Path to a Quobyte Client configuration file. (string value)
-#quobyte_client_cfg=<None>
-
-# The iSCSI transport iface to use to connect to target in
-# case offload support is desired. Supported transports are
-# be2iscsi, bnx2i, cxgb3i, cxgb4i, qla4xxx and ocs. Default
-# format is transport_name.hwaddress and can be generated
-# manually or via iscsiadm -m iface (string value)
-# Deprecated group/name - [DEFAULT]/iscsi_transport
-#iscsi_iface=<None>
+#scality_sofs_mount_point = $state_path/scality
+
+# Directory where the SMBFS shares are mounted on the compute node (string
+# value)
+#smbfs_mount_point_base = $state_path/mnt
+
+# Mount options passed to the SMBFS client. See mount.cifs man page for
+# details. Note that the libvirt-qemu uid and gid must be specified. (string
+# value)
+#smbfs_mount_options =
[matchmaker_redis]
#
-# Options defined in oslo.messaging
+# From oslo.messaging
#
# Host to locate redis. (string value)
-#host=127.0.0.1
-
-# Use this port to connect to redis host. (integer value)
-#port=6379
+#host = 127.0.0.1
+
+# Use this port to connect to redis host. (port value)
+# Minimum value: 0
+# Maximum value: 65535
+#port = 6379
# Password for Redis server (optional). (string value)
-#password=<None>
-
-
-[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
[metrics]
#
-# Options defined in nova.scheduler.weights.metrics
-#
-
-# Multiplier used for weighing metrics. (floating point value)
-#weight_multiplier=1.0
-
-# How the metrics are going to be weighed. This should be in
-# the form of "<name1>=<ratio1>, <name2>=<ratio2>, ...", where
-# <nameX> is one of the metrics to be weighed, and <ratioX> is
-# the corresponding ratio. So for "name1=1.0, name2=-1.0" The
-# final weight would be name1.value * 1.0 + name2.value *
-# -1.0. (list value)
-#weight_setting=
-
-# How to treat the unavailable metrics. When a metric is NOT
-# available for a host, if it is set to be True, it would
-# raise an exception, so it is recommended to use the
-# scheduler filter MetricFilter to filter out those hosts. If
-# it is set to be False, the unavailable metric would be
-# treated as a negative factor in weighing process, the
-# returned value would be set by the option
-# weight_of_unavailable. (boolean value)
-#required=true
-
-# The final weight value to be returned if required is set to
-# False and any one of the metrics set by weight_setting is
-# unavailable. (floating point value)
-#weight_of_unavailable=-10000.0
+# From nova.conf
+#
+
+#
+# When using metrics to weight the suitability of a host, you can use this
+# option
+# to change how the calculated weight influences the weight assigned to a host
+# as
+# follows:
+#
+# * Greater than 1.0: increases the effect of the metric on overall weight.
+#
+# * Equal to 1.0: No change to the calculated weight.
+#
+# * Less than 1.0, greater than 0: reduces the effect of the metric on
+# overall weight.
+#
+# * 0: The metric value is ignored, and the value of the
+# 'weight_of_unavailable' option is returned instead.
+#
+# * Greater than -1.0, less than 0: the effect is reduced and reversed.
+#
+# * -1.0: the effect is reversed
+#
+# * Less than -1.0: the effect is increased proportionally and reversed.
+#
+# Valid values are numeric, either integer or float.
+#
+# This option is only used by the FilterScheduler and its subclasses; if you
+# use
+# a different scheduler, this option has no effect.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# weight_of_unavailable
+# (floating point value)
+#weight_multiplier = 1.0
+
+#
+# This setting specifies the metrics to be weighed and the relative ratios for
+# each metric. This should be a single string value, consisting of a series of
+# one or more 'name=ratio' pairs, separated by commas, where 'name' is the name
+# of the metric to be weighed, and 'ratio' is the relative weight for that
+# metric.
+#
+# Note that if the ratio is set to 0, the metric value is ignored, and instead
+# the weight will be set to the value of the 'weight_of_unavailable' option.
+#
+# As an example, let's consider the case where this option is set to:
+#
+# ``name1=1.0, name2=-1.3``
+#
+# The final weight will be:
+#
+# ``(name1.value * 1.0) + (name2.value * -1.3)``
+#
+# This option is only used by the FilterScheduler and its subclasses; if you
+# use
+# a different scheduler, this option has no effect.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# weight_of_unavailable
+# (list value)
+#weight_setting =
+
+#
+# This setting determines how any unavailable metrics are treated. If this
+# option
+# is set to True, any hosts for which a metric is unavailable will raise an
+# exception, so it is recommended to also use the MetricFilter to filter out
+# those hosts before weighing.
+#
+# When this option is False, any metric being unavailable for a host will set
+# the
+# host weight to 'weight_of_unavailable'.
+#
+# This option is only used by the FilterScheduler and its subclasses; if you
+# use
+# a different scheduler, this option has no effect.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# weight_of_unavailable
+# (boolean value)
+#required = true
+
+#
+# When any of the following conditions are met, this value will be used in
+# place
+# of any actual metric value:
+#
+# * One of the metrics named in 'weight_setting' is not available for a
+# host,
+# and the value of 'required' is False.
+#
+# * The ratio specified for a metric in 'weight_setting' is 0.
+#
+# * The 'weight_multiplier' option is set to 0.
+#
+# This option is only used by the FilterScheduler and its subclasses; if you
+# use
+# a different scheduler, this option has no effect.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# weight_setting
+# required
+# weight_multiplier
+# (floating point value)
+#weight_of_unavailable = -10000.0
[neutron]
#
-# Options defined in nova.api.metadata.handler
-#
-
-# Set flag to indicate Neutron will proxy metadata requests
-# and resolve instance ids. (boolean value)
-service_metadata_proxy=true
-
-# Shared secret to validate proxies Neutron metadata requests
+# From nova.api
+#
+
+# Set flag to indicate Neutron will proxy metadata requests and resolve
+# instance ids. (boolean value)
+service_metadata_proxy = true
+
+# Shared secret to validate proxies Neutron metadata requests (string value)
+#metadata_proxy_shared_secret =
+
+#
+# From nova.network
+#
+
+# URL for connecting to neutron (string value)
+#url = http://127.0.0.1:9696
+
+# Region name for connecting to neutron in admin context (string value)
+#region_name = <None>
+
+# Default OVS bridge name to use if not specified by Neutron (string value)
+ovs_bridge = br_int0
+
+# Number of seconds before querying neutron for extensions (integer value)
+#extension_sync_interval = 600
+
+#
+# From nova.network.neutronv2
+#
+
+# Authentication URL (unknown value)
+auth_url = http://127.0.0.1:5000/v2.0/
+
+# Authentication type to load (unknown value)
+# Deprecated group/name - [DEFAULT]/auth_plugin
+auth_type = v2password
+
+# PEM encoded Certificate Authority to use when verifying HTTPs connections.
# (string value)
-#metadata_proxy_shared_secret=
-
-
-#
-# Options defined in nova.network.neutronv2.api
-#
-
-# Authorization URL for connecting to neutron in admin
-# context. DEPRECATED: specify an auth_plugin and appropriate
-# credentials instead. (string value)
-#admin_auth_url=http://localhost:5000/v2.0
-
-# Password for connecting to neutron in admin context
-# DEPRECATED: specify an auth_plugin and appropriate
-# credentials instead. (string value)
-#admin_password=<None>
-
-# Tenant id for connecting to neutron in admin context
-# DEPRECATED: specify an auth_plugin and appropriate
-# credentials instead. (string value)
-#admin_tenant_id=<None>
-
-# Tenant name for connecting to neutron in admin context. This
-# option will be ignored if neutron_admin_tenant_id is set.
-# Note that with Keystone V3 tenant names are only unique
-# within a domain. DEPRECATED: specify an auth_plugin and
-# appropriate credentials instead. (string value)
-#admin_tenant_name=<None>
-
-# User id for connecting to neutron in admin context.
-# DEPRECATED: specify an auth_plugin and appropriate
-# credentials instead. (string value)
-#admin_user_id=<None>
-
-# Username for connecting to neutron in admin context
-# DEPRECATED: specify an auth_plugin and appropriate
-# credentials instead. (string value)
-#admin_username=<None>
-
-# DEPRECATED: Allow an instance to have multiple vNICs
-# attached to the same Neutron network. This option is
-# deprecated in the 2015.1 release and will be removed in the
-# 2015.2 release where the default behavior will be to always
-# allow multiple ports from the same network to be attached to
-# an instance. (boolean value)
-#allow_duplicate_networks=false
-
-# Authentication URL (string value)
-#auth_url=<None>
-
-# Name of the plugin to load (string value)
-#auth_plugin=<None>
-
-# Authorization strategy for connecting to neutron in admin
-# context. DEPRECATED: specify an auth_plugin and appropriate
-# credentials instead. If an auth_plugin is specified strategy
-# will be ignored. (string value)
-#auth_strategy=keystone
-
-# PEM encoded Certificate Authority to use when verifying
-# HTTPs connections. (string value)
# Deprecated group/name - [neutron]/ca_certificates_file
-#cafile=<None>
+#cafile = <None>
# PEM encoded client certificate cert file (string value)
-#certfile=<None>
-
-# Domain ID to scope to (string value)
-#domain_id=<None>
-
-# Domain name to scope to (string value)
-#domain_name=<None>
-
-# Number of seconds before querying neutron for extensions
-# (integer value)
-#extension_sync_interval=600
+#certfile = <None>
+
+# Optional domain ID to use with v3 and v2 parameters. It will be used for both
+# the user and project domain in v3 and ignored in v2 authentication. (unknown
+# value)
+#default_domain_id = <None>
+
+# Optional domain name to use with v3 API and v2 parameters. It will be used
+# for both the user and project domain in v3 and ignored in v2 authentication.
+# (unknown value)
+#default_domain_name = <None>
+
+# Domain ID to scope to (unknown value)
+#domain_id = <None>
+
+# Domain name to scope to (unknown value)
+#domain_name = <None>
# Verify HTTPS connections. (boolean value)
# Deprecated group/name - [neutron]/api_insecure
-#insecure=false
+#insecure = false
# PEM encoded client certificate key file (string value)
-#keyfile=<None>
-
-# Name of Integration Bridge used by Open vSwitch (string
-# value)
-#ovs_bridge=br_int0
-
-# User's password (string value)
-#password=<None>
-
-# Domain ID containing project (string value)
-#project_domain_id=<None>
-
-# Domain name containing project (string value)
-#project_domain_name=<None>
-
-# Project ID to scope to (string value)
-#project_id=<None>
-
-# Project name to scope to (string value)
-#project_name=<None>
-
-# Region name for connecting to neutron in admin context
-# (string value)
-#region_name=<None>
-
-# Tenant ID to scope to (string value)
-#tenant_id=<None>
-
-# Tenant name to scope to (string value)
-#tenant_name=<None>
+#keyfile = <None>
+
+# User's password (unknown value)
+password = %SERVICE_PASSWORD%
+
+# Domain ID containing project (unknown value)
+#project_domain_id = <None>
+
+# Domain name containing project (unknown value)
+#project_domain_name = <None>
+
+# Project ID to scope to (unknown value)
+# Deprecated group/name - [DEFAULT]/tenant-id
+#project_id = <None>
+
+# Project name to scope to (unknown value)
+# Deprecated group/name - [DEFAULT]/tenant-name
+#project_name = <None>
+
+# Tenant ID (unknown value)
+#tenant_id = <None>
+
+# Tenant Name (unknown value)
+tenant_name = %SERVICE_TENANT_NAME%
# Timeout value for http requests (integer value)
# Deprecated group/name - [neutron]/url_timeout
-#timeout=<None>
-
-# Trust ID (string value)
-#trust_id=<None>
-
-# URL for connecting to neutron (string value)
-#url=http://127.0.0.1:9696
-
-# User's domain id (string value)
-#user_domain_id=<None>
-
-# User's domain name (string value)
-#user_domain_name=<None>
-
-# User id (string value)
-#user_id=<None>
-
-# Username (string value)
-# Deprecated group/name - [DEFAULT]/user_name
-#username=<None>
-
-
-[osapi_v3]
-
-#
-# Options defined in nova.api.openstack
-#
-
-# Whether the V3 API is enabled or not (boolean value)
-#enabled=false
-
-# A list of v3 API extensions to never load. Specify the
-# extension aliases here. (list value)
-#extensions_blacklist=
-
-# If the list is not empty then a v3 API extension will only
-# be loaded if it exists in this list. Specify the extension
-# aliases here. (list value)
-#extensions_whitelist=
+#timeout = <None>
+
+# Trust ID (unknown value)
+#trust_id = <None>
+
+# User's domain id (unknown value)
+#user_domain_id = <None>
+
+# User's domain name (unknown value)
+#user_domain_name = <None>
+
+# User id (unknown value)
+#user_id = <None>
+
+# Username (unknown value)
+# Deprecated group/name - [DEFAULT]/user-name
+username = %SERVICE_USER%
+
+
+[osapi_v21]
+
+#
+# From nova.api
+#
+
+# DEPRECATED: Whether the V2.1 API is enabled or not. This option will be
+# removed in the near future. (boolean value)
+# Deprecated group/name - [osapi_v21]/enabled
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#enabled = true
+
+# DEPRECATED: A list of v2.1 API extensions to never load. Specify the
+# extension aliases here. This option will be removed in the near future. After
+# that point you have to run all of the API. (list value)
+# Deprecated group/name - [osapi_v21]/extensions_blacklist
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#extensions_blacklist =
+
+# DEPRECATED: If the list is not empty then a v2.1 API extension will only be
+# loaded if it exists in this list. Specify the extension aliases here. This
+# option will be removed in the near future. After that point you have to run
+# all of the API. (list value)
+# Deprecated group/name - [osapi_v21]/extensions_whitelist
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#extensions_whitelist =
+
+# DEPRECATED: The validation regex for project_ids used in urls. This defaults
+# to [0-9a-f\-]+ if not set, which matches normal uuids created by keystone.
+# (string value)
+# Deprecated group/name - [osapi_v21]/project_id_regex
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#project_id_regex = <None>
[oslo_concurrency]
#
-# Options defined in oslo.concurrency
+# From oslo.concurrency
#
# Enables or disables inter-process locks. (boolean value)
-#disable_process_locking=false
-
-# Directory to use for lock files. For security, the
-# specified directory should only be writable by the user
-# 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=$state_path/lock
+# Deprecated group/name - [DEFAULT]/disable_process_locking
+#disable_process_locking = false
+
+# Directory to use for lock files. For security, the specified directory
+# should only be writable by the user 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)
+# Deprecated group/name - [DEFAULT]/lock_path
+lock_path = $state_path/lock
[oslo_messaging_amqp]
#
-# Options defined in oslo.messaging
-#
-
-# address prefix used when sending to a specific server
-# (string value)
-#server_request_prefix=exclusive
-
-# address prefix used when broadcasting to all servers (string
-# value)
-#broadcast_prefix=broadcast
-
-# address prefix when sending to any server in group (string
-# value)
-#group_request_prefix=unicast
+# From oslo.messaging
+#
+
+# 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)
-#container_name=<None>
-
-# Timeout for inactive connections (in seconds) (integer
-# value)
-#idle_timeout=0
+# Deprecated group/name - [amqp1]/container_name
+#container_name = <None>
+
+# 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)
-#trace=false
-
-# CA certificate PEM file for verifing server certificate
-# (string value)
-#ssl_ca_file=
-
-# Identifying certificate PEM file to present to clients
-# (string value)
-#ssl_cert_file=
-
-# Private key PEM file used to sign cert_file certificate
-# (string value)
-#ssl_key_file=
-
-# Password for decrypting ssl_key_file (if encrypted) (string
-# value)
-#ssl_key_password=<None>
+# Deprecated group/name - [amqp1]/trace
+#trace = false
+
+# 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 = <None>
# Accept clients using either SSL or plain TCP (boolean value)
-#allow_insecure_clients=false
-
-
-[oslo_messaging_qpid]
-
-#
-# 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
+# Deprecated group/name - [amqp1]/allow_insecure_clients
+#allow_insecure_clients = false
+
+# 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]
+
+#
+# From oslo.messaging
+#
+
+# 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 = <None>
+
+# 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]
#
-# Options defined in oslo.messaging
+# From oslo.messaging
#
# 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
+#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
-
-# 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)
-#kombu_ssl_version=
+# Deprecated group/name - [DEFAULT]/amqp_auto_delete
+#amqp_auto_delete = false
+
+# 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)
-#kombu_ssl_keyfile=
+# Deprecated group/name - [DEFAULT]/kombu_ssl_keyfile
+#kombu_ssl_keyfile =
# SSL cert file (valid only if SSL enabled). (string value)
-#kombu_ssl_certfile=
-
-# SSL certification authority file (valid only if SSL
-# enabled). (string value)
-#kombu_ssl_ca_certs=
-
-# How long to wait before reconnecting in response to an AMQP
-# consumer cancel notification. (floating point value)
-#kombu_reconnect_delay=1.0
-
-# The RabbitMQ broker address where a single node is used.
-# (string value)
-#rabbit_host=localhost
-
-# The RabbitMQ broker port where a single node is used.
-# (integer value)
-#rabbit_port=5672
+# 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 = <None>
+
+# 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 - [DEFAULT]/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)
+# Allowed 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. (port value)
+# Minimum value: 0
+# Maximum value: 65535
+# Deprecated group/name - [DEFAULT]/rabbit_port
+#rabbit_port = 5672
# RabbitMQ HA cluster host:port pairs. (list value)
-#rabbit_hosts=$rabbit_host:$rabbit_port
+# Deprecated group/name - [DEFAULT]/rabbit_hosts
+#rabbit_hosts = $rabbit_host:$rabbit_port
# Connect over SSL for RabbitMQ. (boolean value)
-#rabbit_use_ssl=false
+# Deprecated group/name - [DEFAULT]/rabbit_use_ssl
+#rabbit_use_ssl = false
# The RabbitMQ userid. (string value)
-#rabbit_userid=guest
+# Deprecated group/name - [DEFAULT]/rabbit_userid
+#rabbit_userid = guest
# The RabbitMQ password. (string value)
-#rabbit_password=guest
+# Deprecated group/name - [DEFAULT]/rabbit_password
+#rabbit_password = guest
# The RabbitMQ login method. (string value)
-#rabbit_login_method=AMQPLAIN
+# Deprecated group/name - [DEFAULT]/rabbit_login_method
+#rabbit_login_method = AMQPLAIN
# The RabbitMQ virtual host. (string value)
-#rabbit_virtual_host=/
-
-# How frequently to retry connecting with RabbitMQ. (integer
+# Deprecated group/name - [DEFAULT]/rabbit_virtual_host
+#rabbit_virtual_host = /
+
+# How frequently to retry connecting with RabbitMQ. (integer value)
+#rabbit_retry_interval = 1
+
+# 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
+
+# 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 disable the heartbeat). EXPERIMENTAL (integer
+# value)
+#heartbeat_timeout_threshold = 60
+
+# How often times during the heartbeat_timeout_threshold we check the
+# heartbeat. (integer value)
+#heartbeat_rate = 2
+
+# 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 = <None>
+
+# The maximum byte size for an AMQP frame (integer value)
+#frame_max = <None>
+
+# How often to send heartbeats for consumer's connections (integer value)
+#heartbeat_interval = 1
+
+# Enable SSL (boolean value)
+#ssl = <None>
+
+# Arguments passed to ssl.wrap_socket (dict value)
+#ssl_options = <None>
+
+# 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)
-#rabbit_retry_interval=1
-
-# How long to backoff for between retries when connecting to
-# RabbitMQ. (integer value)
-#rabbit_retry_backoff=2
-
-# Maximum number of RabbitMQ connection retries. Default is 0
-# (infinite retry count). (integer value)
-#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
+#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)
-#rabbit_ha_queues=false
-
-# 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
-
-# How often times during the heartbeat_timeout_threshold we
-# check the heartbeat. (integer value)
-#heartbeat_rate=2
-
-# Deprecated, use rpc_backend=kombu+memory or rpc_backend=fake
-# (boolean value)
-#fake_rabbit=false
+#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)
+# From 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
+#max_request_body_size = 114688
+
+# 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 for removal.
+# Its value may be silently ignored in the future.
+#secure_proxy_ssl_header = X-Forwarded-Proto
+
+
+[oslo_policy]
+
+#
+# From oslo.policy
+#
+
+# 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. They can be relative
+# to any directory in the search path defined by the config_dir option, or
+# absolute paths. The 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_reports]
+
+#
+# From oslo.reports
+#
+
+# Path to a log directory where to create a file (string value)
+#log_dir = <None>
+
+
+[oslo_versionedobjects]
+
+#
+# From oslo.versionedobjects
+#
+
+# Make exception message format errors fatal (boolean value)
+#fatal_exception_format_errors = false
[rdp]
#
-# Options defined in nova.rdp
-#
-
-# Location of RDP html5 console proxy, in the form
-# "http://127.0.0.1:6083/" (string value)
-#html5_proxy_base_url=http://127.0.0.1:6083/
+# From nova
+#
+
+# Location of RDP html5 console proxy, in the form "http://127.0.0.1:6083/"
+# (string value)
+#html5_proxy_base_url = http://127.0.0.1:6083/
# Enable RDP related features (boolean value)
-#enabled=false
+#enabled = false
[serial_console]
#
-# Options defined in nova.cmd.serialproxy
+# From nova.conf
+#
+
+#
+# Enable the serial console feature.
+#
+# In order to use this feature, the service ``nova-serialproxy`` needs to run.
+# This service is typically executed on the controller node.
+#
+# Possible values:
+#
+# * True: Enables the feature
+# * False: Disables the feature
+#
+# Services which consume this:
+#
+# * ``nova-compute``
+#
+# Interdependencies to other options:
+#
+# * None
+# (boolean value)
+#enabled = false
+
+#
+# A range of TCP ports a guest can use for its backend.
+#
+# Each instance which gets created will use one port out of this range. If the
+# range is not big enough to provide another port for an new instance, this
+# instance won't get launched.
+#
+# Possible values:
+#
+# Each string which passes the regex ``\d+:\d+`` For example ``10000:20000``.
+# Be sure that the first port number is lower than the second port number.
+#
+# Services which consume this:
+#
+# * ``nova-compute``
+#
+# Interdependencies to other options:
+#
+# * None
+# (string value)
+#port_range = 10000:20000
+
+#
+# The URL an end user would use to connect to the ``nova-serialproxy`` service.
+#
+# The ``nova-serialproxy`` service is called with this token enriched URL
+# and establishes the connection to the proper instance.
+#
+# Possible values:
+#
+# * <scheme><IP-address><port-number>
+#
+# Services which consume this:
+#
+# * ``nova-compute``
+#
+# Interdependencies to other options:
+#
+# * The IP address must be identical to the address to which the
+# ``nova-serialproxy`` service is listening (see option ``serialproxy_host``
+# in this section).
+# * The port must be the same as in the option ``serialproxy_port`` of this
+# section.
+# * If you choose to use a secured websocket connection, then start this option
+# with ``wss://`` instead of the unsecured ``ws://``. The options ``cert``
+# and ``key`` in the ``[DEFAULT]`` section have to be set for that.
+# (string value)
+#base_url = ws://127.0.0.1:6083/
+
+#
+# DEPRECATED: this option has no effect anymore. Please use
+# "proxyclient_address" instead. This option is deprecated and will be removed
+# in future releases. (string value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#listen = 127.0.0.1
+
+#
+# The IP address to which proxy clients (like ``nova-serialproxy``) should
+# connect to get the serial console of an instance.
+#
+# This is typically the IP address of the host of a ``nova-compute`` service.
+#
+# Possible values:
+#
+# * An IP address
+#
+# Services which consume this:
+#
+# * ``nova-compute``
+#
+# Interdependencies to other options:
+#
+# * None
+# (string value)
+#proxyclient_address = 127.0.0.1
+
+#
+# The IP address which is used by the ``nova-serialproxy`` service to listen
+# for incoming requests.
+#
+# The ``nova-serialproxy`` service listens on this IP address for incoming
+# connection requests to instances which expose serial console.
+#
+# Possible values:
+#
+# * An IP address
+#
+# Services which consume this:
+#
+# * ``nova-serialproxy``
+#
+# Interdependencies to other options:
+#
+# * Ensure that this is the same IP address which is defined in the option
+# ``base_url`` of this section or use ``0.0.0.0`` to listen on all addresses.
+# (string value)
+#serialproxy_host = 0.0.0.0
+
+#
+# The port number which is used by the ``nova-serialproxy`` service to listen
+# for incoming requests.
+#
+# The ``nova-serialproxy`` service listens on this port number for incoming
+# connection requests to instances which expose serial console.
+#
+# Possible values:
+#
+# * A port number
+#
+# Services which consume this:
+#
+# * ``nova-serialproxy``
+#
+# Interdependencies to other options:
+#
+# * Ensure that this is the same port number which is defined in the option
+# ``base_url`` of this section.
+# (integer value)
+# Minimum value: 1
+# Maximum value: 65535
+#serialproxy_port = 6083
+
+
+[solariszones]
+
+#
+# From nova.virt
+#
+
+# Cinder volume type to use for boot volumes (string value)
+#boot_volume_type = <None>
+
+# Cinder availability zone to use for boot volumes (string value)
+#boot_volume_az = <None>
+
+# Default path to Glance cache for Solaris Zones. (string value)
+#glancecache_dirname = /var/share/nova/images
+
+# Cipher to use for encryption of memory traffic during live migration. If not
+# specified, a common encryption algorithm will be negotiated. Options include:
+# none or the name of a supported OpenSSL cipher algorithm. (string value)
+#live_migration_cipher = <None>
+
+# Location to store snapshots before uploading them to the Glance image
+# service. (string value)
+#solariszones_snapshots_directory = $instances_path/snapshots
+
+# Default path for suspend images for Solaris Zones. (string value)
+#zones_suspend_path = /var/share/zones/SYSsuspend
+
+# Allow kernel boot options to be set in instance metadata. (boolean value)
+#solariszones_boot_options = true
+
+
+[spice]
+
+#
+# From nova
#
# Host on which to listen for incoming requests (string value)
-#serialproxy_host=0.0.0.0
-
-# Port on which to listen for incoming requests (integer
-# value)
-#serialproxy_port=6083
-
-
-#
-# Options defined in nova.console.serial
-#
-
-# Enable serial console related features (boolean value)
-#enabled=false
-
-# Range of TCP ports to use for serial ports on compute hosts
-# (string value)
-#port_range=10000:20000
-
-# Location of serial console proxy. (string value)
-#base_url=ws://127.0.0.1:6083/
-
-# IP address on which instance serial console should listen
-# (string value)
-#listen=127.0.0.1
-
-# The address to which proxy clients (like nova-serialproxy)
-# should connect (string value)
-#proxyclient_address=127.0.0.1
-
-
-[spice]
-
-#
-# Options defined in nova.cmd.spicehtml5proxy
-#
-
-# Host on which to listen for incoming requests (string value)
-#html5proxy_host=0.0.0.0
-
-# Port on which to listen for incoming requests (integer
-# value)
-#html5proxy_port=6082
-
-
-#
-# Options defined in nova.spice
-#
+#html5proxy_host = 0.0.0.0
+
+# Port on which to listen for incoming requests (integer value)
+# Minimum value: 1
+# Maximum value: 65535
+#html5proxy_port = 6082
# Location of spice HTML5 console proxy, in the form
# "http://127.0.0.1:6082/spice_auto.html" (string value)
-#html5proxy_base_url=http://127.0.0.1:6082/spice_auto.html
-
-# IP address on which instance spice server should listen
+#html5proxy_base_url = http://127.0.0.1:6082/spice_auto.html
+
+# IP address on which instance spice server should listen (string value)
+#server_listen = 127.0.0.1
+
+# The address to which proxy clients (like nova-spicehtml5proxy) should connect
# (string value)
-#server_listen=127.0.0.1
-
-# The address to which proxy clients (like nova-
-# spicehtml5proxy) should connect (string value)
-#server_proxyclient_address=127.0.0.1
+#server_proxyclient_address = 127.0.0.1
# Enable spice related features (boolean value)
-#enabled=false
+#enabled = false
# Enable spice guest agent support (boolean value)
-#agent_enabled=true
+#agent_enabled = true
# Keymap for spice (string value)
-#keymap=en-us
+#keymap = en-us
[ssl]
#
-# Options defined in nova.openstack.common.sslutils
-#
-
-# CA certificate file to use to verify connecting clients.
-# (string value)
-#ca_file=<None>
-
-# Certificate file to use when starting the server securely.
-# (string value)
-#cert_file=<None>
-
-# Private key file to use when starting the server securely.
-# (string value)
-#key_file=<None>
+# From oslo.service.sslutils
+#
+
+# CA certificate file to use to verify connecting clients. (string value)
+# Deprecated group/name - [DEFAULT]/ssl_ca_file
+#ca_file = <None>
+
+# Certificate file to use when starting the server securely. (string value)
+# Deprecated group/name - [DEFAULT]/ssl_cert_file
+#cert_file = <None>
+
+# Private key file to use when starting the server securely. (string value)
+# Deprecated group/name - [DEFAULT]/ssl_key_file
+#key_file = <None>
+
+# 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 = <None>
+
+# Sets the list of available ciphers. value should be a string in the OpenSSL
+# cipher list format. (string value)
+#ciphers = <None>
[trusted_computing]
#
-# Options defined in nova.scheduler.filters.trusted_filter
-#
-
-# Attestation server HTTP (string value)
-#attestation_server=<None>
-
-# Attestation server Cert file for Identity verification
-# (string value)
-#attestation_server_ca_file=<None>
-
-# Attestation server port (string value)
-#attestation_port=8443
-
-# Attestation web API URL (string value)
-#attestation_api_url=/OpenAttestationWebServices/V1.0
-
-# Attestation authorization blob - must change (string value)
-#attestation_auth_blob=<None>
-
-# Attestation status cache valid period length (integer value)
-#attestation_auth_timeout=60
-
-# Disable SSL cert verification for Attestation service
-# (boolean value)
-#attestation_insecure_ssl=false
+# From nova.conf
+#
+
+#
+# The host to use as the attestation server.
+#
+# Cloud computing pools can involve thousands of compute nodes located at
+# different geographical locations, making it difficult for cloud providers to
+# identify a node's trustworthiness. When using the Trusted filter, users can
+# request that their VMs only be placed on nodes that have been verified by the
+# attestation server specified in this option.
+#
+# The value is a string, and can be either an IP address or FQDN.
+#
+# This option is only used by the FilterScheduler and its subclasses; if you
+# use
+# a different scheduler, this option has no effect. Also note that this setting
+# only affects scheduling if the 'TrustedFilter' filter is enabled.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# attestation_server_ca_file
+# attestation_port
+# attestation_api_url
+# attestation_auth_blob
+# attestation_auth_timeout
+# attestation_insecure_ssl
+# (string value)
+#attestation_server = <None>
+
+#
+# The absolute path to the certificate to use for authentication when
+# connecting
+# to the attestation server. See the `attestation_server` help text for more
+# information about host verification.
+#
+# The value is a string, and must point to a file that is readable by the
+# scheduler.
+#
+# This option is only used by the FilterScheduler and its subclasses; if you
+# use
+# a different scheduler, this option has no effect. Also note that this setting
+# only affects scheduling if the 'TrustedFilter' filter is enabled.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# attestation_server
+# attestation_port
+# attestation_api_url
+# attestation_auth_blob
+# attestation_auth_timeout
+# attestation_insecure_ssl
+# (string value)
+#attestation_server_ca_file = <None>
+
+#
+# The port to use when connecting to the attestation server. See the
+# `attestation_server` help text for more information about host verification.
+#
+# Valid values are strings, not integers, but must be digits only.
+#
+# This option is only used by the FilterScheduler and its subclasses; if you
+# use
+# a different scheduler, this option has no effect. Also note that this setting
+# only affects scheduling if the 'TrustedFilter' filter is enabled.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# attestation_server
+# attestation_server_ca_file
+# attestation_api_url
+# attestation_auth_blob
+# attestation_auth_timeout
+# attestation_insecure_ssl
+# (string value)
+#attestation_port = 8443
+
+#
+# The URL on the attestation server to use. See the `attestation_server` help
+# text for more information about host verification.
+#
+# This value must be just that path portion of the full URL, as it will be
+# joined
+# to the host specified in the attestation_server option.
+#
+# This option is only used by the FilterScheduler and its subclasses; if you
+# use
+# a different scheduler, this option has no effect. Also note that this setting
+# only affects scheduling if the 'TrustedFilter' filter is enabled.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# attestation_server
+# attestation_server_ca_file
+# attestation_port
+# attestation_auth_blob
+# attestation_auth_timeout
+# attestation_insecure_ssl
+# (string value)
+#attestation_api_url = /OpenAttestationWebServices/V1.0
+
+#
+# Attestation servers require a specific blob that is used to authenticate. The
+# content and format of the blob are determined by the particular attestation
+# server being used. There is no default value; you must supply the value as
+# specified by your attestation service. See the `attestation_server` help text
+# for more information about host verification.
+#
+# This option is only used by the FilterScheduler and its subclasses; if you
+# use
+# a different scheduler, this option has no effect. Also note that this setting
+# only affects scheduling if the 'TrustedFilter' filter is enabled.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# attestation_server
+# attestation_server_ca_file
+# attestation_port
+# attestation_api_url
+# attestation_auth_timeout
+# attestation_insecure_ssl
+# (string value)
+#attestation_auth_blob = <None>
+
+#
+# This value controls how long a successful attestation is cached. Once this
+# period has elapsed, a new attestation request will be made. See the
+# `attestation_server` help text for more information about host verification.
+#
+# The value is in seconds. Valid values must be positive integers for any
+# caching; setting this to zero or a negative value will result in calls to the
+# attestation_server for every request, which may impact performance.
+#
+# This option is only used by the FilterScheduler and its subclasses; if you
+# use
+# a different scheduler, this option has no effect. Also note that this setting
+# only affects scheduling if the 'TrustedFilter' filter is enabled.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# attestation_server
+# attestation_server_ca_file
+# attestation_port
+# attestation_api_url
+# attestation_auth_blob
+# attestation_insecure_ssl
+# (integer value)
+#attestation_auth_timeout = 60
+
+#
+# When set to True, the SSL certificate verification is skipped for the
+# attestation service. See the `attestation_server` help text for more
+# information about host verification.
+#
+# Valid values are True or False. The default is False.
+#
+# This option is only used by the FilterScheduler and its subclasses; if you
+# use
+# a different scheduler, this option has no effect. Also note that this setting
+# only affects scheduling if the 'TrustedFilter' filter is enabled.
+#
+# * Services that use this:
+#
+# ``nova-scheduler``
+#
+# * Related options:
+#
+# attestation_server
+# attestation_server_ca_file
+# attestation_port
+# attestation_api_url
+# attestation_auth_blob
+# attestation_auth_timeout
+# (boolean value)
+#attestation_insecure_ssl = false
[upgrade_levels]
#
-# Options defined in nova.baserpc
-#
-
-# Set a version cap for messages sent to the base api in any
-# service (string value)
-#baseapi=<None>
-
-
-#
-# Options defined in nova.cells.rpc_driver
-#
-
-# Set a version cap for messages sent between cells services
-# (string value)
-#intercell=<None>
-
-
-#
-# Options defined in nova.cells.rpcapi
-#
-
-# Set a version cap for messages sent to local cells services
-# (string value)
-#cells=<None>
-
-
-#
-# Options defined in nova.cert.rpcapi
-#
-
-# Set a version cap for messages sent to cert services (string
+# From nova
+#
+
+# Set a version cap for messages sent to the base api in any service (string
+# value)
+#baseapi = <None>
+
+# Set a version cap for messages sent to conductor services (string value)
+#conductor = <None>
+
+# Set a version cap for messages sent to console services (string value)
+#console = <None>
+
+# Set a version cap for messages sent to consoleauth services (string value)
+#consoleauth = <None>
+
+#
+# From nova.compute
+#
+
+# Set a version cap for messages sent to compute services. Set this option to
+# "auto" if you want to let the compute RPC module automatically determine what
+# version to use based on the service versions in the deployment. Otherwise,
+# you can set this to a specific version to pin this service to messages at a
+# particular level. All services of a single type (i.e. compute) should be
+# configured to use the same version, and it should be set to the minimum
+# commonly-supported version of all those services in the deployment. (string
# value)
-#cert=<None>
-
-
-#
-# Options defined in nova.compute.rpcapi
-#
-
-# Set a version cap for messages sent to compute services. If
-# you plan to do a live upgrade from an old version to a newer
-# version, you should set this option to the old version
-# before beginning the live upgrade procedure. Only upgrading
-# to the next version is supported, so you cannot skip a
-# release for the live upgrade procedure. (string value)
-#compute=<None>
-
-
-#
-# Options defined in nova.conductor.rpcapi
-#
-
-# Set a version cap for messages sent to conductor services
-# (string value)
-#conductor=<None>
-
-
-#
-# Options defined in nova.console.rpcapi
-#
-
-# Set a version cap for messages sent to console services
-# (string value)
-#console=<None>
-
-
-#
-# Options defined in nova.consoleauth.rpcapi
-#
-
-# Set a version cap for messages sent to consoleauth services
-# (string value)
-#consoleauth=<None>
-
-
-#
-# Options defined in nova.network.rpcapi
-#
-
-# Set a version cap for messages sent to network services
-# (string value)
-#network=<None>
-
-
-#
-# Options defined in nova.scheduler.rpcapi
-#
-
-# Set a version cap for messages sent to scheduler services
-# (string value)
-#scheduler=<None>
+#compute = <None>
+
+#
+# From nova.conf
+#
+
+#
+# Intercell version
+#
+# Intercell RPC API is the client side of the Cell<->Cell RPC API.
+# Use this option to set a version cap for messages sent between
+# cells services.
+#
+# Possible values:
+#
+# * None: This is the default value.
+# * grizzly: message version 1.0.
+#
+# Services which consume this:
+#
+# * nova-cells
+#
+# Related options:
+#
+# * None
+# (string value)
+#intercell = <None>
+
+#
+# Cells version
+#
+# Cells client-side RPC API version. Use this option to set a version
+# cap for messages sent to local cells services.
+#
+# Possible values:
+#
+# * None: This is the default value.
+# * grizzly: message version 1.6.
+# * havana: message version 1.24.
+# * icehouse: message version 1.27.
+# * juno: message version 1.29.
+# * kilo: message version 1.34.
+# * liberty: message version 1.37.
+#
+# Services which consume this:
+#
+# * nova-cells
+#
+# Related options:
+#
+# * None
+# (string value)
+#cells = <None>
+
+#
+# Specifies the maximum version for messages sent from cert services. This
+# should
+# be the minimum value that is supported by all of the deployed cert services.
+#
+# Possible values:
+#
+# Any valid OpenStack release name, in lower case, such as 'mitaka' or
+# 'liberty'.
+# Alternatively, it can be any string representing a version number in the
+# format
+# 'N.N'; for example, possible values might be '1.12' or '2.0'.
+#
+# * Services which consume this:
+#
+# ``nova-cert``
+#
+# * Related options:
+#
+# None
+# (string value)
+#cert = <None>
+
+#
+# Sets a version cap (limit) for messages sent to scheduler services. In the
+# situation where there were multiple scheduler services running, and they were
+# not being upgraded together, you would set this to the lowest deployed
+# version
+# to guarantee that other services never send messages that any of your running
+# schedulers cannot understand.
+#
+# This is rarely needed in practice as most deployments run a single scheduler.
+# It exists mainly for design compatibility with the other services, such as
+# compute, which are routinely upgraded in a rolling fashion.
+#
+# * Services that use this:
+#
+# ``nova-compute, nova-conductor``
+#
+# * Related options:
+#
+# None
+# (string value)
+#scheduler = <None>
+
+#
+# From nova.network
+#
+
+# Set a version cap for messages sent to network services (string value)
+#network = <None>
[vmware]
#
-# Options defined in nova.virt.vmwareapi.driver
-#
+# From nova.virt
+#
+
+# The maximum number of ObjectContent data objects that should be returned in a
+# single result. A positive value will cause the operation to suspend the
+# retrieval when the count of objects reaches the specified maximum. The server
+# may still limit the count to something less than the configured value. Any
+# remaining objects may be retrieved with additional requests. (integer value)
+#maximum_objects = 100
# The PBM status. (boolean value)
-#pbm_enabled=false
+#pbm_enabled = false
# PBM service WSDL file location URL. e.g.
-# file:///opt/SDK/spbm/wsdl/pbmService.wsdl Not setting this
-# will disable storage policy based placement of instances.
-# (string value)
-#pbm_wsdl_location=<None>
-
-# The PBM default policy. If pbm_wsdl_location is set and
-# there is no defined storage policy for the specific request
-# then this policy will be used. (string value)
-#pbm_default_policy=<None>
-
-# Hostname or IP address for connection to VMware VC host.
+# file:///opt/SDK/spbm/wsdl/pbmService.wsdl Not setting this will disable
+# storage policy based placement of instances. (string value)
+#pbm_wsdl_location = <None>
+
+# The PBM default policy. If pbm_wsdl_location is set and there is no defined
+# storage policy for the specific request then this policy will be used.
# (string value)
-#host_ip=<None>
-
-# Port for connection to VMware VC host. (integer value)
-#host_port=443
-
-# Username for connection to VMware VC host. (string value)
-#host_username=<None>
-
-# Password for connection to VMware VC host. (string value)
-#host_password=<None>
-
-# Name of a VMware Cluster ComputeResource. (multi valued)
-#cluster_name=<None>
+#pbm_default_policy = <None>
+
+# Hostname or IP address for connection to VMware vCenter host. (string value)
+#host_ip = <None>
+
+# Port for connection to VMware vCenter host. (port value)
+# Minimum value: 0
+# Maximum value: 65535
+#host_port = 443
+
+# Username for connection to VMware vCenter host. (string value)
+#host_username = <None>
+
+# Password for connection to VMware vCenter host. (string value)
+#host_password = <None>
+
+# Specify a CA bundle file to use in verifying the vCenter server certificate.
+# (string value)
+#ca_file = <None>
+
+# If true, the vCenter server certificate is not verified. If false, then the
+# default CA truststore is used for verification. This option is ignored if
+# "ca_file" is set. (boolean value)
+#insecure = false
+
+# Name of a VMware Cluster ComputeResource. (string value)
+#cluster_name = <None>
# Regex to match the name of a datastore. (string value)
-#datastore_regex=<None>
-
-# The interval used for polling of remote tasks. (floating
-# point value)
-#task_poll_interval=0.5
-
-# The number of times we retry on failures, e.g., socket
-# error, etc. (integer value)
-#api_retry_count=10
-
-# VNC starting port (integer value)
-#vnc_port=5900
+#datastore_regex = <None>
+
+# The interval used for polling of remote tasks. (floating point value)
+#task_poll_interval = 0.5
+
+# The number of times we retry on failures, e.g., socket error, etc. (integer
+# value)
+#api_retry_count = 10
+
+# VNC starting port (port value)
+# Minimum value: 0
+# Maximum value: 65535
+#vnc_port = 5900
# Total number of VNC ports (integer value)
-#vnc_port_total=10000
+#vnc_port_total = 10000
# Whether to use linked clone (boolean value)
-#use_linked_clone=true
-
-# Optional VIM Service WSDL Location e.g
-# http://<server>/vimService.wsdl. Optional over-ride to
-# default location for bug work-arounds (string value)
-#wsdl_location=<None>
-
-
-#
-# Options defined in nova.virt.vmwareapi.vif
-#
-
-# Physical ethernet adapter name for vlan networking (string
+#use_linked_clone = true
+
+# Optional VIM Service WSDL Location e.g http://<server>/vimService.wsdl.
+# Optional over-ride to default location for bug work-arounds (string value)
+#wsdl_location = <None>
+
+# Physical ethernet adapter name for vlan networking (string value)
+#vlan_interface = vmnic0
+
+# This option should be configured only when using the NSX-MH Neutron plugin.
+# This is the name of the integration bridge on the ESXi. This should not be
+# set for any other Neutron plugin. Hence the default value is not set. (string
+# value)
+#integration_bridge = <None>
+
+# Set this value if affected by an increased network latency causing repeated
+# characters when typing in a remote console. (integer value)
+#console_delay_seconds = <None>
+
+# Identifies the remote system that serial port traffic will be sent to. If
+# this is not set, no serial ports will be added to the created VMs. (string
# value)
-#vlan_interface=vmnic0
-
-# Name of Integration Bridge (string value)
-#integration_bridge=br-int
-
-
-#
-# Options defined in nova.virt.vmwareapi.vim_util
-#
-
-# The maximum number of ObjectContent data objects that should
-# be returned in a single result. A positive value will cause
-# the operation to suspend the retrieval when the count of
-# objects reaches the specified maximum. The server may still
-# limit the count to something less than the configured value.
-# Any remaining objects may be retrieved with additional
-# requests. (integer value)
-#maximum_objects=100
-
-
-#
-# Options defined in nova.virt.vmwareapi.vmops
-#
-
-# The prefix for Where cached images are stored. This is NOT
-# the full path - just a folder prefix. This should only be
-# used when a datastore cache should be shared between compute
-# nodes. Note: this should only be used when the compute nodes
-# have a shared file system. (string value)
-#cache_prefix=<None>
+#serial_port_service_uri = <None>
+
+# Identifies a proxy service that provides network access to the
+# serial_port_service_uri. This option is ignored if serial_port_service_uri is
+# not specified. (string value)
+#serial_port_proxy_uri = <None>
+
+# The prefix for where cached images are stored. This is NOT the full path -
+# just a folder prefix. This should only be used when a datastore cache should
+# be shared between compute nodes. Note: this should only be used when the
+# compute nodes have a shared file system. (string value)
+#cache_prefix = <None>
+
+
+[vnc]
+#
+# Virtual Network Computer (VNC) can be used to provide remote desktop
+# console access to instances for tenants and/or administrators.
+
+#
+# From nova.conf
+#
+
+# Enable VNC related features.
+#
+# Guests will get created with graphical devices to support this. Clients
+# (for example Horizon) can then establish a VNC connection to the guest.
+#
+# Possible values:
+#
+# * True: Enables the feature
+# * False: Disables the feature
+#
+# Services which consume this:
+#
+# * ``nova-compute``
+#
+# Related options:
+#
+# * None
+# (boolean value)
+# Deprecated group/name - [DEFAULT]/vnc_enabled
+#enabled = true
+
+# Keymap for VNC.
+#
+# The keyboard mapping (keymap) determines which keyboard layout a VNC
+# session should use by default.
+#
+# Possible values:
+#
+# * A keyboard layout which is supported by the underlying hypervisor on
+# this node. This is usually an 'IETF language tag' (for example
+# 'en-us'). If you use QEMU as hypervisor, you should find the list
+# of supported keyboard layouts at ``/usr/share/qemu/keymaps``.
+#
+# Services which consume this:
+#
+# * ``nova-compute``
+#
+# Related options:
+#
+# * None
+# (string value)
+# Deprecated group/name - [DEFAULT]/vnc_keymap
+#keymap = en-us
+
+#
+# The IP address on which an instance should listen to for incoming VNC
+# connection requests on this node.
+#
+# Possible values:
+#
+# * An IP address
+#
+# Services which consume this:
+#
+# * ``nova-compute``
+#
+# Related options:
+#
+# * None
+# (string value)
+# Deprecated group/name - [DEFAULT]/vncserver_listen
+#vncserver_listen = 127.0.0.1
+
+#
+# Private, internal address of VNC console proxy.
+#
+# The VNC proxy is an OpenStack component that enables compute service
+# users to access their instances through VNC clients.
+#
+# This option sets the private address to which proxy clients, such as
+# ``nova-xvpvncproxy``, should connect to.
+#
+# Possible values:
+#
+# * An IP address
+#
+# Services which consume this:
+#
+# * ``nova-compute``
+#
+# Related options:
+#
+# * None
+# (string value)
+# Deprecated group/name - [DEFAULT]/vncserver_proxyclient_address
+#vncserver_proxyclient_address = 127.0.0.1
+
+#
+# IP address that the noVNC console proxy should bind to.
+#
+# The VNC proxy is an OpenStack component that enables compute service
+# users to access their instances through VNC clients. noVNC provides
+# VNC support through a websocket-based client.
+#
+# This option sets the private address to which the noVNC console proxy
+# service should bind to.
+#
+# Possible values:
+#
+# * An IP address
+#
+# Services which consume this:
+#
+# * ``nova-compute``
+#
+# Related options:
+#
+# * novncproxy_port
+# * novncproxy_base_url
+# (string value)
+# Deprecated group/name - [DEFAULT]/novncproxy_host
+#novncproxy_host = 0.0.0.0
+
+#
+# Port that the noVNC console proxy should bind to.
+#
+# The VNC proxy is an OpenStack component that enables compute service
+# users to access their instances through VNC clients. noVNC provides
+# VNC support through a websocket-based client.
+#
+# This option sets the private port to which the noVNC console proxy
+# service should bind to.
+#
+# Possible values:
+#
+# * A port number
+#
+# Services which consume this:
+#
+# * ``nova-compute``
+#
+# Related options:
+#
+# * novncproxy_host
+# * novncproxy_base_url
+# (integer value)
+# Minimum value: 1
+# Maximum value: 65535
+# Deprecated group/name - [DEFAULT]/novncproxy_port
+#novncproxy_port = 6080
+
+#
+# Public address of noVNC VNC console proxy.
+#
+# The VNC proxy is an OpenStack component that enables compute service
+# users to access their instances through VNC clients. noVNC provides
+# VNC support through a websocket-based client.
+#
+# This option sets the public base URL to which client systems will
+# connect. noVNC clients can use this address to connect to the noVNC
+# instance and, by extension, the VNC sessions.
+#
+# Possible values:
+#
+# * A URL
+#
+# Services which consume this:
+#
+# * ``nova-compute``
+#
+# Related options:
+#
+# * novncproxy_host
+# * novncproxy_port
+# (string value)
+# Deprecated group/name - [DEFAULT]/novncproxy_base_url
+novncproxy_base_url = http://$my_ip:6080/vnc_auto.html
+
+#
+# IP address that the XVP VNC console proxy should bind to.
+#
+# The VNC proxy is an OpenStack component that enables compute service
+# users to access their instances through VNC clients. Xen provides
+# the Xenserver VNC Proxy, or XVP, as an alternative to the
+# websocket-based noVNC proxy used by Libvirt. In contrast to noVNC,
+# XVP clients are Java-based.
+#
+# This option sets the private address to which the XVP VNC console proxy
+# service should bind to.
+#
+# Possible values:
+#
+# * An IP address
+#
+# Services which consume this:
+#
+# * ``nova-compute``
+#
+# Related options:
+#
+# * xvpvncproxy_port
+# * xvpvncproxy_base_url
+# (string value)
+# Deprecated group/name - [DEFAULT]/xvpvncproxy_host
+#xvpvncproxy_host = 0.0.0.0
+
+#
+# Port that the XVP VNC console proxy should bind to.
+#
+# The VNC proxy is an OpenStack component that enables compute service
+# users to access their instances through VNC clients. Xen provides
+# the Xenserver VNC Proxy, or XVP, as an alternative to the
+# websocket-based noVNC proxy used by Libvirt. In contrast to noVNC,
+# XVP clients are Java-based.
+#
+# This option sets the private port to which the XVP VNC console proxy
+# service should bind to.
+#
+# Possible values:
+#
+# * A port number
+#
+# Services which consume this:
+#
+# * ``nova-compute``
+#
+# Related options:
+#
+# * xvpvncproxy_host
+# * xvpvncproxy_base_url
+# (integer value)
+# Minimum value: 1
+# Maximum value: 65535
+# Deprecated group/name - [DEFAULT]/xvpvncproxy_port
+#xvpvncproxy_port = 6081
+
+#
+# Public address of XVP VNC console proxy.
+#
+# The VNC proxy is an OpenStack component that enables compute service
+# users to access their instances through VNC clients. Xen provides
+# the Xenserver VNC Proxy, or XVP, as an alternative to the
+# websocket-based noVNC proxy used by Libvirt. In contrast to noVNC,
+# XVP clients are Java-based.
+#
+# This option sets the public base URL to which client systems will
+# connect. XVP clients can use this address to connect to the XVP
+# instance and, by extension, the VNC sessions.
+#
+# Possible values:
+#
+# * A URL
+#
+# Services which consume this:
+#
+# * ``nova-compute``
+#
+# Related options:
+#
+# * xvpvncproxy_host
+# * xvpvncproxy_port
+# (string value)
+# Deprecated group/name - [DEFAULT]/xvpvncproxy_base_url
+#xvpvncproxy_base_url = http://127.0.0.1:6081/console
[workarounds]
#
-# Options defined in nova.utils
-#
-
-# This option allows a fallback to sudo for performance
-# reasons. For example see
-# https://bugs.launchpad.net/nova/+bug/1415106 (boolean value)
-#disable_rootwrap=false
-
-# When using libvirt 1.2.2 fails live snapshots intermittently
-# under load. This config option provides mechanism to
-# disable livesnapshot while this is resolved. See
-# https://bugs.launchpad.net/nova/+bug/1334398 (boolean value)
-#disable_libvirt_livesnapshot=true
-
-# Whether to destroy instances on startup when we suspect they
-# have previously been evacuated. This can result in data loss
-# if undesired. See https://launchpad.net/bugs/1419785
-# (boolean value)
-#destroy_after_evacuate=true
+# From nova
+#
+
+# This option allows a fallback to sudo for performance reasons. For example
+# see https://bugs.launchpad.net/nova/+bug/1415106 (boolean value)
+#disable_rootwrap = false
+
+# When using libvirt 1.2.2 live snapshots fail intermittently under load. This
+# config option provides a mechanism to enable live snapshot while this is
+# resolved. See https://bugs.launchpad.net/nova/+bug/1334398 (boolean value)
+#disable_libvirt_livesnapshot = true
+
+# DEPRECATED: Whether to destroy instances on startup when we suspect they have
+# previously been evacuated. This can result in data loss if undesired. See
+# https://launchpad.net/bugs/1419785 (boolean value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#destroy_after_evacuate = true
+
+# Whether or not to handle events raised from the compute driver's 'emit_event'
+# method. These are lifecycle events raised from compute drivers that implement
+# the method. An example of a lifecycle event is an instance starting or
+# stopping. If the instance is going through task state changes due to an API
+# operation, like resize, the events are ignored. However, this is an advanced
+# feature which allows the hypervisor to signal to the compute service that an
+# unexpected state change has occurred in an instance and the instance can be
+# shutdown automatically - which can inherently race in reboot operations or
+# when the compute service or host is rebooted, either planned or due to an
+# unexpected outage. Care should be taken when using this and
+# sync_power_state_interval is negative since then if any instances are out of
+# sync between the hypervisor and the Nova database they will have to be
+# synchronized manually. See https://bugs.launchpad.net/bugs/1444630 (boolean
+# value)
+#handle_virt_lifecycle_events = true
[xenserver]
#
-# Options defined in nova.virt.xenapi.agent
-#
+# From nova.virt
+#
+
+# Name of Integration Bridge used by Open vSwitch (string value)
+#ovs_integration_bridge = xapi1
# Number of seconds to wait for agent reply (integer value)
-#agent_timeout=30
-
-# Number of seconds to wait for agent to be fully operational
-# (integer value)
-#agent_version_timeout=300
-
-# Number of seconds to wait for agent reply to resetnetwork
-# request (integer value)
-#agent_resetnetwork_timeout=60
-
-# Specifies the path in which the XenAPI guest agent should be
-# located. If the agent is present, network configuration is
-# not injected into the image. Used if
-# compute_driver=xenapi.XenAPIDriver and flat_injected=True
-# (string value)
-#agent_path=usr/sbin/xe-update-networking
-
-# Disables the use of the XenAPI agent in any image regardless
-# of what image properties are present. (boolean value)
-#disable_agent=false
-
-# Determines if the XenAPI agent should be used when the image
-# used does not contain a hint to declare if the agent is
-# present or not. The hint is a glance property
-# "xenapi_use_agent" that has the value "True" or "False".
-# Note that waiting for the agent when it is not present will
-# significantly increase server boot times. (boolean value)
-#use_agent_default=false
-
-
-#
-# Options defined in nova.virt.xenapi.client.session
-#
+#agent_timeout = 30
+
+# Number of seconds to wait for agent to be fully operational (integer value)
+#agent_version_timeout = 300
+
+# Number of seconds to wait for agent reply to resetnetwork request (integer
+# value)
+#agent_resetnetwork_timeout = 60
+
+# Specifies the path in which the XenAPI guest agent should be located. If the
+# agent is present, network configuration is not injected into the image. Used
+# if compute_driver=xenapi.XenAPIDriver and flat_injected=True (string value)
+#agent_path = usr/sbin/xe-update-networking
+
+# Disables the use of the XenAPI agent in any image regardless of what image
+# properties are present. (boolean value)
+#disable_agent = false
+
+# Determines if the XenAPI agent should be used when the image used does not
+# contain a hint to declare if the agent is present or not. The hint is a
+# glance property "xenapi_use_agent" that has the value "True" or "False". Note
+# that waiting for the agent when it is not present will significantly increase
+# server boot times. (boolean value)
+#use_agent_default = false
# Timeout in seconds for XenAPI login. (integer value)
-#login_timeout=10
-
-# Maximum number of concurrent XenAPI connections. Used only
-# if compute_driver=xenapi.XenAPIDriver (integer value)
-#connection_concurrent=5
-
-
-#
-# Options defined in nova.virt.xenapi.driver
-#
-
-# URL for connection to XenServer/Xen Cloud Platform. A
-# special value of unix://local can be used to connect to the
-# local unix socket. Required if
+#login_timeout = 10
+
+# Maximum number of concurrent XenAPI connections. Used only if
+# compute_driver=xenapi.XenAPIDriver (integer value)
+#connection_concurrent = 5
+
+# URL for connection to XenServer/Xen Cloud Platform. A special value of
+# unix://local can be used to connect to the local unix socket. Required if
+# compute_driver=xenapi.XenAPIDriver (string value)
+#connection_url = <None>
+
+# Username for connection to XenServer/Xen Cloud Platform. Used only if
# compute_driver=xenapi.XenAPIDriver (string value)
-#connection_url=<None>
-
-# Username for connection to XenServer/Xen Cloud Platform.
-# Used only if compute_driver=xenapi.XenAPIDriver (string
-# value)
-#connection_username=root
-
-# Password for connection to XenServer/Xen Cloud Platform.
-# Used only if compute_driver=xenapi.XenAPIDriver (string
-# value)
-#connection_password=<None>
-
-# The interval used for polling of coalescing vhds. Used only
-# if compute_driver=xenapi.XenAPIDriver (floating point value)
-#vhd_coalesce_poll_interval=5.0
-
-# Ensure compute service is running on host XenAPI connects
-# to. (boolean value)
-#check_host=true
-
-# Max number of times to poll for VHD to coalesce. Used only
-# if compute_driver=xenapi.XenAPIDriver (integer value)
-#vhd_coalesce_max_attempts=20
+#connection_username = root
+
+# Password for connection to XenServer/Xen Cloud Platform. Used only if
+# compute_driver=xenapi.XenAPIDriver (string value)
+#connection_password = <None>
+
+# The interval used for polling of coalescing vhds. Used only if
+# compute_driver=xenapi.XenAPIDriver (floating point value)
+#vhd_coalesce_poll_interval = 5.0
+
+# Ensure compute service is running on host XenAPI connects to. (boolean value)
+#check_host = true
+
+# Max number of times to poll for VHD to coalesce. Used only if
+# compute_driver=xenapi.XenAPIDriver (integer value)
+#vhd_coalesce_max_attempts = 20
# Base path to the storage repository (string value)
-#sr_base_path=/var/run/sr-mount
+#sr_base_path = /var/run/sr-mount
# The iSCSI Target Host (string value)
-#target_host=<None>
+#target_host = <None>
# The iSCSI Target Port, default is port 3260 (string value)
-#target_port=3260
+#target_port = 3260
# IQN Prefix (string value)
-#iqn_prefix=iqn.2010-10.org.openstack
-
-# Used to enable the remapping of VBD dev (Works around an
-# issue in Ubuntu Maverick) (boolean value)
-#remap_vbd_dev=false
-
-# Specify prefix to remap VBD dev to (ex. /dev/xvdb ->
-# /dev/sdb) (string value)
-#remap_vbd_dev_prefix=sd
-
-
-#
-# Options defined in nova.virt.xenapi.image.bittorrent
-#
-
-# Base URL for torrent files. (string value)
-#torrent_base_url=<None>
-
-# Probability that peer will become a seeder. (1.0 = 100%)
-# (floating point value)
-#torrent_seed_chance=1.0
-
-# Number of seconds after downloading an image via BitTorrent
-# that it should be seeded for other peers. (integer value)
-#torrent_seed_duration=3600
-
-# Cached torrent files not accessed within this number of
-# seconds can be reaped (integer value)
-#torrent_max_last_accessed=86400
+#iqn_prefix = iqn.2010-10.org.openstack
+
+# Used to enable the remapping of VBD dev (Works around an issue in Ubuntu
+# Maverick) (boolean value)
+#remap_vbd_dev = false
+
+# Specify prefix to remap VBD dev to (ex. /dev/xvdb -> /dev/sdb) (string value)
+#remap_vbd_dev_prefix = sd
+
+# Base URL for torrent files; must contain a slash character (see RFC 1808,
+# step 6) (string value)
+#torrent_base_url = <None>
+
+# Probability that peer will become a seeder. (1.0 = 100%) (floating point
+# value)
+#torrent_seed_chance = 1.0
+
+# Number of seconds after downloading an image via BitTorrent that it should be
+# seeded for other peers. (integer value)
+#torrent_seed_duration = 3600
+
+# Cached torrent files not accessed within this number of seconds can be reaped
+# (integer value)
+#torrent_max_last_accessed = 86400
# Beginning of port range to listen on (integer value)
-#torrent_listen_port_start=6881
+# Minimum value: 1
+# Maximum value: 65535
+#torrent_listen_port_start = 6881
# End of port range to listen on (integer value)
-#torrent_listen_port_end=6891
-
-# Number of seconds a download can remain at the same progress
-# percentage w/o being considered a stall (integer value)
-#torrent_download_stall_cutoff=600
-
-# Maximum number of seeder processes to run concurrently
-# within a given dom0. (-1 = no limit) (integer value)
-#torrent_max_seeder_processes_per_host=1
-
-
-#
-# Options defined in nova.virt.xenapi.pool
-#
+# Minimum value: 1
+# Maximum value: 65535
+#torrent_listen_port_end = 6891
+
+# Number of seconds a download can remain at the same progress percentage w/o
+# being considered a stall (integer value)
+#torrent_download_stall_cutoff = 600
+
+# Maximum number of seeder processes to run concurrently within a given dom0.
+# (-1 = no limit) (integer value)
+#torrent_max_seeder_processes_per_host = 1
# To use for hosts with different CPUs (boolean value)
-#use_join_force=true
-
-
-#
-# Options defined in nova.virt.xenapi.vif
-#
-
-# Name of Integration Bridge used by Open vSwitch (string
-# value)
-#ovs_integration_bridge=xapi1
-
-
-#
-# Options defined in nova.virt.xenapi.vm_utils
-#
-
-# Cache glance images locally. `all` will cache all images,
-# `some` will only cache images that have the image_property
-# `cache_in_nova=True`, and `none` turns off caching entirely
-# (string value)
-#cache_images=all
-
-# Compression level for images, e.g., 9 for gzip -9. Range is
-# 1-9, 9 being most compressed but most CPU intensive on dom0.
-# (integer value)
-#image_compression_level=<None>
+#use_join_force = true
+
+# Cache glance images locally. `all` will cache all images, `some` will only
+# cache images that have the image_property `cache_in_nova=True`, and `none`
+# turns off caching entirely (string value)
+# Allowed values: all, some, none
+#cache_images = all
+
+# Compression level for images, e.g., 9 for gzip -9. Range is 1-9, 9 being most
+# compressed but most CPU intensive on dom0. (integer value)
+# Minimum value: 1
+# Maximum value: 9
+#image_compression_level = <None>
# Default OS type (string value)
-#default_os_type=linux
-
-# Time to wait for a block device to be created (integer
-# value)
-#block_device_creation_timeout=10
-
-# Maximum size in bytes of kernel or ramdisk images (integer
-# value)
-#max_kernel_ramdisk_size=16777216
-
-# Filter for finding the SR to be used to install guest
-# instances on. To use the Local Storage in default
-# XenServer/XCP installations set this flag to other-config
-# :i18n-key=local-storage. To select an SR with a different
-# matching criteria, you could set it to other-
-# config:my_favorite_sr=true. On the other hand, to fall back
-# on the Default SR, as displayed by XenCenter, set this flag
-# to: default-sr:true (string value)
-#sr_matching_filter=default-sr:true
-
-# Whether to use sparse_copy for copying data on a resize down
-# (False will use standard dd). This speeds up resizes down
-# considerably since large runs of zeros won't have to be
-# rsynced (boolean value)
-#sparse_copy=true
-
-# Maximum number of retries to unplug VBD. if <=0, should try
-# once and no retry (integer value)
-#num_vbd_unplug_retries=10
-
-# Whether or not to download images via Bit Torrent
-# (all|some|none). (string value)
-#torrent_images=none
+#default_os_type = linux
+
+# Time to wait for a block device to be created (integer value)
+#block_device_creation_timeout = 10
+
+# Maximum size in bytes of kernel or ramdisk images (integer value)
+#max_kernel_ramdisk_size = 16777216
+
+# Filter for finding the SR to be used to install guest instances on. To use
+# the Local Storage in default XenServer/XCP installations set this flag to
+# other-config:i18n-key=local-storage. To select an SR with a different
+# matching criteria, you could set it to other-config:my_favorite_sr=true. On
+# the other hand, to fall back on the Default SR, as displayed by XenCenter,
+# set this flag to: default-sr:true (string value)
+#sr_matching_filter = default-sr:true
+
+# Whether to use sparse_copy for copying data on a resize down (False will use
+# standard dd). This speeds up resizes down considerably since large runs of
+# zeros won't have to be rsynced (boolean value)
+#sparse_copy = true
+
+# Maximum number of retries to unplug VBD. if <=0, should try once and no retry
+# (integer value)
+#num_vbd_unplug_retries = 10
+
+# Whether or not to download images via Bit Torrent. (string value)
+# Allowed values: all, some, none
+#torrent_images = none
# Name of network to use for booting iPXE ISOs (string value)
-#ipxe_network_name=<None>
+#ipxe_network_name = <None>
# URL to the iPXE boot menu (string value)
-#ipxe_boot_menu_url=<None>
-
-# Name and optionally path of the tool used for ISO image
-# creation (string value)
-#ipxe_mkisofs_cmd=mkisofs
-
-
-#
-# Options defined in nova.virt.xenapi.vmops
-#
-
-# Number of seconds to wait for instance to go to running
-# state (integer value)
-#running_timeout=60
-
-# The XenAPI VIF driver using XenServer Network APIs. (string
-# value)
-#vif_driver=nova.virt.xenapi.vif.XenAPIBridgeDriver
-
-# Dom0 plugin driver used to handle image uploads. (string
+#ipxe_boot_menu_url = <None>
+
+# Name and optionally path of the tool used for ISO image creation (string
# value)
-#image_upload_handler=nova.virt.xenapi.image.glance.GlanceStore
-
-
-#
-# Options defined in nova.virt.xenapi.volume_utils
-#
-
-# Number of seconds to wait for an SR to settle if the VDI
-# does not exist when first introduced (integer value)
-#introduce_vdi_retry_wait=20
-
-
-[zookeeper]
-
-#
-# Options defined in nova.servicegroup.drivers.zk
-#
-
-# The ZooKeeper addresses for servicegroup service in the
-# format of host1:port,host2:port,host3:port (string value)
-#address=<None>
-
-# The recv_timeout parameter for the zk session (integer
-# value)
-#recv_timeout=4000
-
-# The prefix used in ZooKeeper to store ephemeral nodes
-# (string value)
-#sg_prefix=/servicegroups
-
-# Number of seconds to wait until retrying to join the session
-# (integer value)
-#sg_retry_interval=5
-
-
+#ipxe_mkisofs_cmd = mkisofs
+
+# Number of seconds to wait for instance to go to running state (integer value)
+#running_timeout = 60
+
+# The XenAPI VIF driver using XenServer Network APIs. (string value)
+#vif_driver = nova.virt.xenapi.vif.XenAPIBridgeDriver
+
+# Dom0 plugin driver used to handle image uploads. (string value)
+#image_upload_handler = nova.virt.xenapi.image.glance.GlanceStore
+
+# Number of seconds to wait for an SR to settle if the VDI does not exist when
+# first introduced (integer value)
+#introduce_vdi_retry_wait = 20
--- a/components/openstack/nova/files/release Wed Sep 07 14:48:42 2016 -0700
+++ b/components/openstack/nova/files/release Wed Sep 07 14:48:42 2016 -0700
@@ -1,4 +1,4 @@
[Nova]
vendor = Oracle Solaris
product = OpenStack Nova
-package = Kilo 2015.1.2
+package = Mitaka 13.1.0
--- a/components/openstack/nova/files/solariszones/driver.py Wed Sep 07 14:48:42 2016 -0700
+++ b/components/openstack/nova/files/solariszones/driver.py Wed Sep 07 14:48:42 2016 -0700
@@ -45,15 +45,21 @@
from oslo_log import log as logging
from oslo_serialization import jsonutils
from oslo_utils import excutils
+from oslo_utils import fileutils
from oslo_utils import strutils
+from oslo_utils import versionutils
from passlib.hash import sha256_crypt
from nova.api.metadata import password
+from nova.compute import arch
+from nova.compute import hv_type
from nova.compute import power_state
from nova.compute import task_states
+from nova.compute import vm_mode
from nova.compute import vm_states
+from nova import conductor
+import nova.conf
from nova.console import type as ctype
-from nova import conductor
from nova import context as nova_context
from nova import crypto
from nova import exception
@@ -63,7 +69,7 @@
from nova.network.neutronv2 import api as neutronv2_api
from nova import objects
from nova.objects import flavor as flavor_obj
-from nova.openstack.common import fileutils
+from nova.objects import migrate_data as migrate_data_obj
from nova import utils
from nova.virt import driver
from nova.virt import event as virtevent
@@ -103,9 +109,8 @@
'metadata.'),
]
-CONF = cfg.CONF
-CONF.register_opts(solariszones_opts)
-CONF.import_opt('vncserver_proxyclient_address', 'nova.vnc')
+CONF = nova.conf.CONF
+CONF.register_opts(solariszones_opts, 'solariszones')
LOG = logging.getLogger(__name__)
# These should match the strings returned by the zone_state_str()
@@ -402,8 +407,8 @@
code = ex.get_payload().code
if (ignore_exists and
code == zonemgr.ErrorCode.RESOURCE_ALREADY_EXISTS):
- self.zone.setResourceProperties(zonemgr.Resource(
- resource, None), props)
+ self.zone.setResourceProperties(
+ zonemgr.Resource(resource, None), props)
return
reason = zonemgr_strerror(ex)
LOG.error(_("Unable to create new resource '%s' for instance '%s'"
@@ -430,7 +435,6 @@
def clear_resource_props(self, resource, props):
"""Clear property values of a given resource
"""
-
try:
self.zone.clearResourceProperties(zonemgr.Resource(resource, None),
props)
@@ -476,7 +480,8 @@
capabilities = {
"has_imagecache": False,
"supports_recreate": True,
- }
+ "supports_migrate_to_same_host": False
+ }
def __init__(self, virtapi):
self.virtapi = virtapi
@@ -695,7 +700,6 @@
attempts to emulate what the virtual platform code does to
determine a number of virtual CPUs to use.
"""
-
# If a 'virtual-cpu' resource exists, use the minimum number of
# CPUs defined there.
ncpus = lookup_resource_property(zone, 'virtual-cpu', 'ncpus')
@@ -721,15 +725,19 @@
def _get_kstat_by_name(self, kstat_class, module, instance, name):
"""Return Kstat snapshot data via RAD as a dictionary."""
- pattern = {
- 'class': kstat_class,
- 'module': module,
- 'instance': instance,
- 'name': name
- }
+ pattern = {}
+ if kstat_class is not None:
+ pattern.update({'class': kstat_class})
+ if module is not None:
+ pattern.update({'module': module})
+ if instance is not None:
+ pattern.update({'instance': instance})
+ if name is not None:
+ pattern.update({'name': name})
+
try:
self.kstat_control.update()
- kstat_object = self.rad_connection.get_object(
+ kstat_objects = self.rad_connection.list_objects(
kstat.Kstat(), rad.client.ADRGlobPattern(pattern))
except Exception as reason:
LOG.info(_("Unable to retrieve kstat object '%s:%s:%s' of class "
@@ -737,23 +745,49 @@
% (module, instance, name, kstat_class, reason))
return None
- kstat_data = {}
- for named in kstat_object.fresh_snapshot().data.NAMED:
- kstat_data[named.name] = getattr(named.value,
- str(named.value.discriminant))
+ kstat_data = []
+ for kstat_object in kstat_objects:
+ object = self.rad_connection.get_object(kstat_object)
+ for named in object.fresh_snapshot().data.NAMED:
+ kstat_data.append(
+ {named.name:
+ getattr(named.value, str(named.value.discriminant))})
return kstat_data
+ def _aggregate_kstat_statistic(self, kstat_data, statistic):
+ aggregate = 0
+ for ks in kstat_data:
+ value = ks.get(statistic)
+ if value is not None:
+ aggregate += value
+
+ return aggregate
+
+ def _get_kstat_statistic(self, kstat_data, statistic):
+ value = None
+ for ks in kstat_data:
+ value = ks.get(statistic)
+ if value is not None:
+ break
+
+ return value
+
def _get_cpu_time(self, zone):
"""Return the CPU time used in nanoseconds."""
if zone.id == -1:
return 0
- kstat_data = self._get_kstat_by_name('zones', 'cpu', str(zone.id),
- 'sys_zone_aggr')
+ kstat_data = self._get_kstat_by_name(
+ 'zones', 'cpu', None, ''.join(('sys_zone_', str(zone.id))))
if kstat_data is None:
return 0
- return kstat_data['cpu_nsec_kernel'] + kstat_data['cpu_nsec_user']
+ cpu_nsec_kernel = self._aggregate_kstat_statistic(kstat_data,
+ 'cpu_nsec_kernel')
+ cpu_nsec_user = self._aggregate_kstat_statistic(kstat_data,
+ 'cpu_nsec_user')
+
+ return cpu_nsec_kernel + cpu_nsec_user
def get_info(self, instance):
"""Get the current status of an instance, by name (not ID!)
@@ -918,8 +952,8 @@
:param instance: nova.objects.instance.Instance
This function should use the data there to guide
the creation of the new instance.
- :param image_meta: image object returned by nova.image.glance that
- defines the image from which to boot this instance
+ :param nova.objects.ImageMeta image_meta:
+ The metadata of the image of the instance.
:param injected_files: User files to inject into instance.
:param admin_password: Administrator password to set in instance.
:param bdms: block-device-mappings to use for rebuild
@@ -955,28 +989,14 @@
root_ci = self._rebuild_block_devices(context, instance, bdms,
recreate)
- if root_ci is not None:
- driver_type = root_ci['driver_volume_type']
- else:
- driver_type = 'local'
-
- # If image_meta is provided then the --on-shared-storage option
- # was not used.
- if image_meta:
- # If not then raise an exception. But if this is a rebuild then
- # the local storage is ok.
- if driver_type in shared_storage and recreate:
- msg = (_("Root device is on shared storage for instance '%s'.")
- % instance['name'])
- raise exception.NovaException(msg)
-
- else:
- # So the root device is not expected to be local so we can move
- # forward with building the zone.
+ if recreate:
+ if root_ci is not None:
+ driver_type = root_ci['driver_volume_type']
+ else:
+ driver_type = 'local'
if driver_type not in shared_storage:
msg = (_("Root device is not on shared storage for instance "
"'%s'.") % instance['name'])
-
raise exception.NovaException(msg)
if not recreate:
@@ -989,16 +1009,17 @@
instance.save(
expected_task_state=[task_states.REBUILD_BLOCK_DEVICE_MAPPING])
+ # Instead of using a boolean for 'rebuilding' scratch data, use a
+ # string because the object will translate it to a string anyways.
if recreate:
extra_specs = self._get_extra_specs(instance)
- instance.system_metadata['rebuilding'] = False
- self._create_config(context, instance, network_info,
- root_ci, None)
+ instance.system_metadata['rebuilding'] = 'false'
+ self._create_config(context, instance, network_info, root_ci, None)
del instance.system_metadata['evac_from']
instance.save()
else:
- instance.system_metadata['rebuilding'] = True
+ instance.system_metadata['rebuilding'] = 'true'
self.spawn(context, instance, image_meta, injected_files,
admin_password, network_info, block_device_info)
self.power_off(instance)
@@ -1040,7 +1061,7 @@
def _fetch_image(self, context, instance):
"""Fetch an image using Glance given the instance's image_ref."""
- glancecache_dirname = CONF.glancecache_dirname
+ glancecache_dirname = CONF.solariszones.glancecache_dirname
fileutils.ensure_tree(glancecache_dirname)
image = ''.join([glancecache_dirname, '/', instance['image_ref']])
if os.path.exists(image):
@@ -1072,9 +1093,8 @@
reason = ex.get_payload().info
else:
reason = str(ex)
- raise exception.ImageUnacceptable(
- image_id=instance['image_ref'],
- reason=reason)
+ raise exception.ImageUnacceptable(image_id=instance['image_ref'],
+ reason=reason)
# Validate the image at this point to ensure:
# - contains one deployable system
@@ -1126,13 +1146,38 @@
data = connection_info['data']
# suri(5) format:
# iscsi://<host>[:<port>]/target.<IQN>,lun.<LUN>
+ # luname-only URI format for the multipathing:
+ # iscsi://<host>[:<port>]/luname.naa.<ID>
# Sample iSCSI connection data values:
# target_portal: 192.168.1.244:3260
# target_iqn: iqn.2010-10.org.openstack:volume-a89c.....
# target_lun: 1
- suri = 'iscsi://%s/target.%s,lun.%d' % (data['target_portal'],
- data['target_iqn'],
- data['target_lun'])
+ suri = None
+ if 'target_iqns' in data:
+ target = data['target_iqns'][0]
+ target_lun = data['target_luns'][0]
+ try:
+ utils.execute('/usr/sbin/iscsiadm', 'list', 'target',
+ '-vS', target)
+ out, err = utils.execute('/usr/sbin/suriadm', 'lookup-uri',
+ '-t', 'iscsi',
+ '-p', 'target=%s' % target,
+ '-p', 'lun=%s' % target_lun)
+ for line in [l.strip() for l in out.splitlines()]:
+ if "luname.naa." in line:
+ LOG.debug(_("The found luname-only URI for the "
+ "LUN '%s' is '%s'.") %
+ (target_lun, line))
+ suri = line
+ except processutils.ProcessExecutionError as ex:
+ reason = ex.stderr
+ LOG.debug(_("Failed to lookup-uri for volume '%s', lun "
+ "'%s': '%s'.") % (target, target_lun, reason))
+
+ if suri is None:
+ suri = 'iscsi://%s/target.%s,lun.%d' % (data['target_portal'],
+ data['target_iqn'],
+ data['target_lun'])
# TODO(npower): need to handle CHAP authentication also
elif driver_type == 'nfs':
data = connection_info['data']
@@ -1158,8 +1203,7 @@
# Invoke 'fcinfo remote-port' on all local HBA ports to trigger
# a refresh.
for wwpn in self._get_fc_wwpns():
- utils.execute('/usr/sbin/fcinfo', 'remote-port',
- '-p', wwpn)
+ utils.execute('/usr/sbin/fcinfo', 'remote-port', '-p', wwpn)
suri = self._lookup_fc_volume_suri(target_wwn, target_lun)
return suri
@@ -1228,17 +1272,15 @@
def _create_boot_volume(self, context, instance):
"""Create a (Cinder) volume service backed boot volume"""
- boot_vol_az = CONF.boot_volume_az
- boot_vol_type = CONF.boot_volume_type
+ boot_vol_az = CONF.solariszones.boot_volume_az
+ boot_vol_type = CONF.solariszones.boot_volume_type
try:
vol = self._volume_api.create(
- context,
- instance['root_gb'],
+ context, instance['root_gb'],
instance['hostname'] + "-" + self._rootzpool_suffix,
"Boot volume for instance '%s' (%s)"
% (instance['name'], instance['uuid']),
- volume_type=boot_vol_type,
- availability_zone=boot_vol_az)
+ volume_type=boot_vol_type, availability_zone=boot_vol_az)
# TODO(npower): Polling is what nova/compute/manager also does when
# creating a new volume, so we do likewise here.
while True:
@@ -1258,8 +1300,9 @@
volume_id = volume['id']
connector = self.get_volume_connector(instance)
- connection_info = self._volume_api.initialize_connection(
- context, volume_id, connector)
+ connection_info = self._volume_api.initialize_connection(context,
+ volume_id,
+ connector)
connection_info['serial'] = volume_id
# Check connection_info to determine if the provided volume is
@@ -1305,8 +1348,7 @@
raise exception.InvalidVolume(reason=msg)
# Volume looks OK to use. Notify Cinder of the attachment.
- self._volume_api.attach(context, volume_id, instance_uuid,
- mountpoint)
+ self._volume_api.attach(context, volume_id, instance_uuid, mountpoint)
return connection_info
def _set_boot_device(self, name, connection_info, brand):
@@ -1321,15 +1363,13 @@
# ZOSS device configuration is different for the solaris-kz brand
if brand == ZONE_BRAND_SOLARIS_KZ:
zc.zone.setResourceProperties(
- zonemgr.Resource(
- "device",
- [zonemgr.Property("bootpri", "0")]),
+ zonemgr.Resource("device",
+ [zonemgr.Property("bootpri", "0")]),
[zonemgr.Property("storage", suri)])
else:
- zc.addresource(
- ROOTZPOOL_RESOURCE,
- [zonemgr.Property("storage", listvalue=[suri])],
- ignore_exists=True)
+ zc.addresource(ROOTZPOOL_RESOURCE,
+ [zonemgr.Property("storage", listvalue=[suri])],
+ ignore_exists=True)
def _set_num_cpu(self, name, vcpus, brand):
"""Set number of VCPUs in a Solaris Zone configuration."""
@@ -1365,11 +1405,54 @@
with ZoneConfig(zone) as zc:
zc.setprop('capped-memory', mem_resource, '%dM' % memory_mb)
+ def _ovs_add_port(self, instance, vif, port):
+ if vif['type'] == 'binding_failed':
+ LOG.error(_('Port binding has failed for VIF %s. Ensure that '
+ 'OVS agent is running and/or bridge_mappings are '
+ 'correctly configured. VM will not have network '
+ 'connectivity') % vif)
+
+ ovs_bridge = CONF.neutron.ovs_bridge
+ cmd = ['/usr/sbin/ovs-vsctl',
+ '--timeout=%s' % CONF.ovs_vsctl_timeout,
+ '--', '--if-exists', 'del-port', ovs_bridge, port,
+ '--', 'add-port', ovs_bridge, port,
+ '--', 'set', 'Interface', port,
+ 'external-ids:iface-id=%s' % vif['id'],
+ 'external-ids:iface-status=active',
+ 'external-ids:attached-mac=%s' % vif['address'],
+ 'external-ids:vm-uuid=%s' % instance['uuid']
+ ]
+ try:
+ out, err = utils.execute(*cmd)
+ except Exception as reason:
+ msg = (_("Failed to add port '%s' with MAC address '%s' to "
+ "OVS Bridge '%s': %s")
+ % (port, vif['address'], ovs_bridge, reason))
+ raise exception.NovaException(msg)
+ LOG.debug(_('Successfully added port %s with MAC adddress %s') %
+ (port, vif['address']))
+
+ def _ovs_delete_port(self, port, log_warnings=False):
+ ovs_bridge = CONF.neutron.ovs_bridge
+ cmd = ['/usr/sbin/ovs-vsctl',
+ '--timeout=%s' % CONF.ovs_vsctl_timeout,
+ '--', '--if-exists', 'del-port', ovs_bridge, port]
+ try:
+ out, err = utils.execute(*cmd)
+ LOG.debug(_('Removed port %s from the OVS bridge %s') %
+ (port, ovs_bridge))
+ except Exception as reason:
+ msg = (_("Unable to remove port '%s' from the OVS "
+ "bridge '%s': %s") % (port, ovs_bridge, reason))
+ if log_warnings:
+ LOG.warning(msg)
+ else:
+ raise nova.exception.NovaException(msg)
+
def _plug_vifs(self, instance, network_info):
- # if the VIF is of EVS type (i.e., vif['type'] is ''),
- # then nothing to do
- if not network_info or not network_info[0]['type']:
- LOG.debug(_("VIF is an EVS type. Nothing to plug."))
+ if not network_info:
+ LOG.debug(_("Instance has no VIF. Nothing to plug."))
return
# first find out all the anets for a given instance
@@ -1378,7 +1461,7 @@
'-z', instance['name'],
'-po', 'link,macaddress')
except Exception as reason:
- msg = (_("Unable to get ANETs for instance '%s': %s")
+ msg = (_("Unable to get interfaces for instance '%s': %s")
% (instance['name'], reason))
raise exception.NovaException(msg)
@@ -1389,109 +1472,40 @@
maddr = ''.join(['%02x' % int(b, 16) for b in maddr.split(':')])
anetdict[maddr] = anet
- LOG.debug(_("List of instance %s's anets: %s") % (instance['name'],
- anetdict))
+ LOG.debug(_("List of instance %s's anets: %s")
+ % (instance['name'], anetdict))
# we now have a list of VNICs that belong to the VM
# we need to map the VNIC to the bridge
- bridge = CONF.neutron.ovs_bridge
for vif in network_info:
- if vif['type'] == 'binding_failed':
- LOG.error(_('Port binding has failed for VIF %s. Ensure that '
- 'OVS agent is running and/or bridge_mappings are '
- 'correctly configured. VM will not have network '
- 'connectivity') % vif)
vif_maddr = ''.join(['%02x' % int(b, 16) for b in
vif['address'].split(':')])
anet = anetdict.get(vif_maddr)
if anet is None:
LOG.error(_('Failed to add port %s connected to network %s '
- 'to instance %s') % (vif['ovs_interfaceid'],
- vif['network']['id'],
- instance['name']))
+ 'to instance %s')
+ % (vif['ovs_interfaceid'], vif['network']['id'],
+ instance['name']))
continue
- cmd = ['/usr/sbin/ovs-vsctl',
- '--timeout=%s' % CONF.ovs_vsctl_timeout,
- '--', '--if-exists', 'del-port', bridge, anet,
- '--', 'add-port', bridge, anet,
- '--', 'set', 'Interface', anet,
- 'external-ids:iface-id=%s' % vif['id'],
- 'external-ids:iface-status=active',
- 'external-ids:attached-mac=%s' % vif['address'],
- 'external-ids:vm-uuid=%s' % instance['uuid']
- ]
- try:
- out, err = utils.execute(*cmd)
- except Exception as reason:
- msg = (_("Failed to add VNIC '%s' with MAC address %s to "
- "OVS Bridge '%s': %s") % (anet, vif['address'],
- bridge, reason))
- raise exception.NovaException(msg)
- LOG.debug(_('Successfully added anet %s with MAC adddress %s') %
- (anet, vif['address']))
+ self._ovs_add_port(instance, vif, anet)
def _unplug_vifs(self, instance):
- # Since we don't have VIF info here, we need to find if the anets
- # were EVS based or OVS based by looking at the CONF setting. In
- # EVS based cloud neutron.ovs_bridge setting will be set to the
- # default value of 'br-int'.
ovs_bridge = CONF.neutron.ovs_bridge
- if ovs_bridge == 'br-int':
- LOG.debug(_("Instance %s doesn't have any OVS based anets") %
- instance['name'])
- return
# remove the anets from the OVS bridge
cmd = ['/usr/sbin/ovs-vsctl', '--timeout=%s' % CONF.ovs_vsctl_timeout,
'list-ports', ovs_bridge]
try:
out, err = utils.execute(*cmd)
except Exception as reason:
- msg = (_("Unable to get ANETs for instance '%s': %s")
+ msg = (_("Unable to get interfaces for instance '%s': %s")
% (instance['name'], reason))
raise exception.NovaException(msg)
for port in out.strip().splitlines():
if port.split('/')[0] != instance['name']:
continue
- cmd = ['/usr/sbin/ovs-vsctl',
- '--timeout=%s' % CONF.ovs_vsctl_timeout,
- '--', '--if-exists', 'del-port', ovs_bridge, port]
- try:
- out, err = utils.execute(*cmd)
- LOG.debug(_('Removed port %s from the OVS bridge %s') %
- (port, ovs_bridge))
- except Exception as reason:
- LOG.warning(_("Unable to remove port %s from the OVS "
- "bridge %s: %s") % (port, ovs_bridge, reason))
-
- def _set_evs_info(self, zone, brand, vifid, vif):
- vport_uuid = vif['id']
- evs_uuid = vif['network']['id']
- with ZoneConfig(zone) as zc:
- if vifid == 0:
- tenant_id = vif['network']['meta']['tenant_id']
- zc.setprop('global', 'tenant', tenant_id)
- zc.setprop('anet', 'configure-allowed-address', 'false')
- zc.setprop('anet', 'evs', evs_uuid)
- zc.setprop('anet', 'vport', vport_uuid)
- else:
- zc.addresource(
- 'anet',
- [zonemgr.Property('configure-allowed-address',
- 'false'),
- zonemgr.Property('evs', evs_uuid),
- zonemgr.Property('vport', vport_uuid)])
-
- prop_filter = [zonemgr.Property('vport', vport_uuid)]
- if brand == ZONE_BRAND_SOLARIS:
- anetname = lookup_resource_property(zc.zone, 'anet',
- 'linkname', prop_filter)
- else:
- anetid = lookup_resource_property(zc.zone, 'anet', 'id',
- prop_filter)
- anetname = 'net%s' % anetid
- return anetname
-
- def _set_ovs_info(self, context, zone, brand, vifid, vif):
+ self._ovs_delete_port(port, log_warnings=True)
+
+ def _set_ovs_info(self, context, zone, brand, first_anet, vif):
# Need to be admin to retrieve provider:network_type attribute
network_plugin = neutronv2_api.get_client(context, admin=True)
network = network_plugin.show_network(
@@ -1512,17 +1526,17 @@
other_config = results[0]['other_config']
if not other_config:
msg = (_("'other_config' column in 'Open_vSwitch' OVSDB table "
- "is not configured. Please configure it so that "
+ "is not configured. Please configure it so that the "
"lower-link can be determined for the instance's "
- "anet"))
+ "interface."))
LOG.error(msg)
raise exception.NovaException(msg)
bridge_mappings = other_config.get('bridge_mappings')
if not bridge_mappings:
- msg = (_("'bridge_mappings' info is not set in 'other_config' "
- "column of 'Open_vSwitch' OVSDB table. Please "
- "configure it so that lower-link can be determined "
- "for the instance's anet"))
+ msg = (_("'bridge_mappings' info is not set in the "
+ "'other_config' column of 'Open_vSwitch' OVSDB "
+ "table. Please configure it so that the lower-link "
+ "can be determined for the instance's interface."))
LOG.error(msg)
raise exception.NovaException(msg)
for bridge_mapping in bridge_mappings.split(','):
@@ -1530,7 +1544,7 @@
lower_link = bridge_mapping.split(':')[1]
break
if not lower_link:
- msg = (_("Failed to determine the lower_link for vif '%s'") %
+ msg = (_("Failed to determine the lower_link for vif '%s'.") %
(vif))
LOG.error(msg)
raise exception.NovaException(msg)
@@ -1542,7 +1556,7 @@
mtu = network['mtu']
with ZoneConfig(zone) as zc:
- if vifid == 0:
+ if first_anet:
zc.setprop('anet', 'lower-link', lower_link)
zc.setprop('anet', 'configure-allowed-address', 'false')
zc.setprop('anet', 'mac-address', vif['address'])
@@ -1586,7 +1600,6 @@
for vifid, vif in enumerate(network_info):
LOG.debug("%s", jsonutils.dumps(vif, indent=5))
- # get all the info common to both EVS or OVS based VIF
ip = vif['network']['subnets'][0]['ips'][0]['address']
cidr = vif['network']['subnets'][0]['cidr']
ip_cidr = "%s/%s" % (ip, cidr.split('/')[1])
@@ -1601,12 +1614,8 @@
if dns['type'] == 'dns':
nameservers.append(dns['address'])
- # for EVS based VIFs the type is empty since EVS plugin
- # doesn't support portbinding extension
- if not vif['type']:
- anetname = self._set_evs_info(zone, brand, vifid, vif)
- else:
- anetname = self._set_ovs_info(context, zone, brand, vifid, vif)
+ anetname = self._set_ovs_info(context, zone, brand, vifid == 0,
+ vif)
# create the required sysconfig file (or skip if this is part of a
# resize or evacuate process)
@@ -1616,14 +1625,19 @@
task_states.RESIZE_MIGRATING,
task_states.REBUILD_SPAWNING] or \
(tstate == task_states.REBUILD_SPAWNING and
- instance.system_metadata['rebuilding']):
+ instance.system_metadata['rebuilding'] == 'true'):
if enable_dhcp:
- tree = sysconfig.create_ncp_defaultfixed(
- 'dhcp', anetname, vifid, ip_version)
+ tree = sysconfig.create_ncp_defaultfixed('dhcp',
+ anetname, vifid,
+ ip_version)
else:
- tree = sysconfig.create_ncp_defaultfixed(
- 'static', anetname, vifid, ip_version, ip_cidr, route,
- nameservers)
+ host_routes = vif['network']['subnets'][0]['routes']
+ tree = sysconfig.create_ncp_defaultfixed('static',
+ anetname, vifid,
+ ip_version,
+ ip_cidr, route,
+ nameservers,
+ host_routes)
fp = os.path.join(sc_dir, 'zone-network-%d.xml' % vifid)
sysconfig.create_sc_profile(fp, tree)
@@ -1636,7 +1650,8 @@
if zone is None:
raise exception.InstanceNotFound(instance_id=name)
- path = os.path.join(CONF.zones_suspend_path, '%{zonename}')
+ path = os.path.join(CONF.solariszones.zones_suspend_path,
+ '%{zonename}')
with ZoneConfig(zone) as zc:
zc.addresource('suspend', [zonemgr.Property('path', path)])
@@ -1737,14 +1752,14 @@
task_states.RESIZE_MIGRATING,
task_states.REBUILD_SPAWNING] or \
(tstate == task_states.REBUILD_SPAWNING and
- instance.system_metadata['rebuilding']):
+ instance.system_metadata['rebuilding'] == 'true'):
sc_profile = extra_specs.get('install:sc_profile')
if sc_profile is not None:
if os.path.isfile(sc_profile):
shutil.copy(sc_profile, sc_dir)
elif os.path.isdir(sc_profile):
- shutil.copytree(sc_profile, os.path.join(sc_dir,
- 'sysconfig'))
+ shutil.copytree(sc_profile,
+ os.path.join(sc_dir, 'sysconfig'))
self._verify_sysconfig(sc_dir, instance, admin_password)
@@ -1789,8 +1804,8 @@
name = instance['name']
# TODO(npower): investigate using RAD instead of CLI invocation
try:
- out, err = utils.execute('/usr/sbin/svccfg', '-s',
- VNC_CONSOLE_BASE_FMRI, 'add', name)
+ out, err = utils.execute('/usr/sbin/svccfg',
+ '-s', VNC_CONSOLE_BASE_FMRI, 'add', name)
except processutils.ProcessExecutionError as ex:
if self._has_vnc_console_service(instance):
LOG.debug(_("Ignoring attempt to create existing zone VNC "
@@ -1808,8 +1823,9 @@
self._disable_vnc_console_service(instance)
# TODO(npower): investigate using RAD instead of CLI invocation
try:
- out, err = utils.execute('/usr/sbin/svccfg', '-s',
- VNC_CONSOLE_BASE_FMRI, 'delete', name)
+ out, err = utils.execute('/usr/sbin/svccfg',
+ '-s', VNC_CONSOLE_BASE_FMRI, 'delete',
+ name)
except processutils.ProcessExecutionError as ex:
if not self._has_vnc_console_service(instance):
LOG.debug(_("Ignoring attempt to delete a non-existent zone "
@@ -1897,8 +1913,8 @@
console_fmri = VNC_CONSOLE_BASE_FMRI + ':' + name
# TODO(npower): investigate using RAD instead of CLI invocation
try:
- out, err = utils.execute('/usr/sbin/svcadm', 'disable', '-s',
- console_fmri)
+ out, err = utils.execute('/usr/sbin/svcadm', 'disable',
+ '-s', console_fmri)
except processutils.ProcessExecutionError as ex:
reason = ex.stderr
LOG.error(_("Unable to disable zone VNC console SMF service "
@@ -1992,7 +2008,7 @@
self._set_instance_metahostid(instance)
bootargs = []
- if CONF.solariszones_boot_options:
+ if CONF.solariszones.solariszones_boot_options:
reset_bootargs = False
persistent = 'False'
@@ -2004,8 +2020,8 @@
if meta_bootargs:
bootargs = ['--', str(meta_bootargs)]
- persistent = str(instance.metadata.get('bootargs_persist',
- 'False'))
+ persistent = str(
+ instance.metadata.get('bootargs_persist', 'False'))
if cur_bootargs is not None and meta_bootargs != cur_bootargs:
with ZoneConfig(zone) as zc:
reset_bootargs = True
@@ -2021,7 +2037,7 @@
"%s") % (name, reason))
raise exception.InstancePowerOnFailure(reason=reason)
finally:
- if CONF.solariszones_boot_options:
+ if CONF.solariszones.solariszones_boot_options:
if meta_bootargs and persistent.lower() == 'false':
# We have consumed the metadata bootargs and
# the user asked for them not to be persistent so
@@ -2082,8 +2098,8 @@
:param instance: nova.objects.instance.Instance
This function should use the data there to guide
the creation of the new instance.
- :param image_meta: image object returned by nova.image.glance that
- defines the image from which to boot this instance
+ :param nova.objects.ImageMeta image_meta:
+ The metadata of the image of the instance.
:param injected_files: User files to inject into instance.
:param admin_password: Administrator password to set in instance.
:param network_info:
@@ -2162,8 +2178,8 @@
if connection_info is not None:
bdm_obj = objects.BlockDeviceMappingList()
# there's only one bdm for this instance at this point
- bdm = bdm_obj.get_by_instance_uuid(context,
- instance.uuid).objects[0]
+ bdm = bdm_obj.get_by_instance_uuid(
+ context, instance.uuid).objects[0]
# update the required attributes
bdm['connection_info'] = jsonutils.dumps(connection_info)
@@ -2366,7 +2382,7 @@
return
bootargs = []
- if CONF.solariszones_boot_options:
+ if CONF.solariszones.solariszones_boot_options:
reset_bootargs = False
persistent = 'False'
@@ -2378,8 +2394,8 @@
if meta_bootargs:
bootargs = ['--', str(meta_bootargs)]
- persistent = str(instance.metadata.get('bootargs_persist',
- 'False'))
+ persistent = str(
+ instance.metadata.get('bootargs_persist', 'False'))
if cur_bootargs is not None and meta_bootargs != cur_bootargs:
with ZoneConfig(zone) as zc:
reset_bootargs = True
@@ -2400,7 +2416,7 @@
% (name, reason))
raise exception.InstanceRebootFailure(reason=reason)
finally:
- if CONF.solariszones_boot_options:
+ if CONF.solariszones.solariszones_boot_options:
if meta_bootargs and persistent.lower() == 'false':
# We have consumed the metadata bootargs and
# the user asked for them not to be persistent so
@@ -2502,13 +2518,12 @@
"'%s': %s" % (console_fmri, reason)))
raise
- host = CONF.vncserver_proxyclient_address
+ host = CONF.vnc.vncserver_proxyclient_address
try:
out, err = utils.execute('/usr/bin/svcprop', '-p', 'vnc/port',
console_fmri)
port = int(out.strip())
- return ctype.ConsoleVNC(host=host,
- port=port,
+ return ctype.ConsoleVNC(host=host, port=port,
internal_access_path=None)
except processutils.ProcessExecutionError as ex:
reason = ex.stderr
@@ -2546,41 +2561,67 @@
"""
raise NotImplementedError()
+ def get_mks_console(self, context, instance):
+ """Get connection info for a MKS console.
+
+ :param context: security context
+ :param instance: nova.objects.instance.Instance
+
+ :returns an instance of console.type.ConsoleMKS
+ """
+ raise NotImplementedError()
+
def _get_zone_diagnostics(self, zone):
"""Return data about Solaris Zone diagnostics."""
if zone.id == -1:
return None
diagnostics = {}
- id = str(zone.id)
-
- kstat_data = self._get_kstat_by_name('zone_caps', 'caps', id,
- ''.join(('lockedmem_zone_', id)))
+ zone_id = str(zone.id)
+
+ kstat_data = self._get_kstat_by_name(
+ 'zone_caps', 'caps', zone_id,
+ ''.join(('lockedmem_zone_', zone_id)))
if kstat_data is not None:
- diagnostics['lockedmem'] = kstat_data['usage']
-
- kstat_data = self._get_kstat_by_name('zone_caps', 'caps', id,
- ''.join(('nprocs_zone_', id)))
+ diagnostics['lockedmem'] = self._get_kstat_statistic(kstat_data,
+ 'usage')
+
+ kstat_data = self._get_kstat_by_name(
+ 'zone_caps', 'caps', zone_id, ''.join(('nprocs_zone_', zone_id)))
if kstat_data is not None:
- diagnostics['nprocs'] = kstat_data['usage']
-
- kstat_data = self._get_kstat_by_name('zone_caps', 'caps', id,
- ''.join(('swapresv_zone_', id)))
+ diagnostics['nprocs'] = self._get_kstat_statistic(kstat_data,
+ 'usage')
+
+ kstat_data = self._get_kstat_by_name(
+ 'zone_caps', 'caps', zone_id, ''.join(('swapresv_zone_', zone_id)))
if kstat_data is not None:
- diagnostics['swapresv'] = kstat_data['usage']
-
- kstat_data = self._get_kstat_by_name('zones', 'cpu', id,
- 'sys_zone_aggr')
+ diagnostics['swapresv'] = self._get_kstat_statistic(kstat_data,
+ 'usage')
+
+ kstat_data = self._get_kstat_by_name('zones', 'cpu', None,
+ ''.join(('sys_zone_', zone_id)))
if kstat_data is not None:
- for key in kstat_data.keys():
- if key not in ('class', 'crtime', 'snaptime'):
- diagnostics[key] = kstat_data[key]
+ for ks in kstat_data:
+ key = ks.keys()[0]
+ if key in ('class', 'crtime', 'snaptime', 'zonename'):
+ continue
+ if key.endswith('_cur'):
+ continue
+ if diagnostics.get(key) is None:
+ diagnostics[key] = 0
+ else:
+ diagnostics[key] += ks[key]
return diagnostics
def get_diagnostics(self, instance):
- """Return data about VM diagnostics.
-
- :param instance: nova.objects.instance.Instance
+ """Return diagnostics data about the given instance.
+
+ :param nova.objects.instance.Instance instance:
+ The instance to which the diagnostic data should be returned.
+
+ :return: Has a big overlap to the return value of the newer interface
+ :func:`get_instance_diagnostics`
+ :rtype: dict
"""
# TODO(Vek): Need to pass context in for access to auth_token
name = instance['name']
@@ -2590,9 +2631,14 @@
return self._get_zone_diagnostics(zone)
def get_instance_diagnostics(self, instance):
- """Return data about VM diagnostics.
-
- :param instance: nova.objects.instance.Instance
+ """Return diagnostics data about the given instance.
+
+ :param nova.objects.instance.Instance instance:
+ The instance to which the diagnostic data should be returned.
+
+ :return: Has a big overlap to the return value of the older interface
+ :func:`get_diagnostics`
+ :rtype: nova.virt.diagnostics.Diagnostics
"""
raise NotImplementedError()
@@ -2709,28 +2755,137 @@
def swap_volume(self, old_connection_info, new_connection_info,
instance, mountpoint, resize_to):
- """Replace the disk attached to the instance.
-
- :param instance: nova.objects.instance.Instance
- :param resize_to: This parameter is used to indicate the new volume
- size when the new volume lager than old volume.
- And the units is Gigabyte.
+ """Replace the volume attached to the given `instance`.
+
+ :param dict old_connection_info:
+ The volume for this connection gets detached from the given
+ `instance`.
+ :param dict new_connection_info:
+ The volume for this connection gets attached to the given
+ 'instance'.
+ :param nova.objects.instance.Instance instance:
+ The instance whose volume gets replaced by another one.
+ :param str mountpoint:
+ The mountpoint in the instance where the volume for
+ `old_connection_info` is attached to.
+ :param int resize_to:
+ If the new volume is larger than the old volume, it gets resized
+ to the given size (in Gigabyte) of `resize_to`.
+
+ :return: None
"""
raise NotImplementedError()
def attach_interface(self, instance, image_meta, vif):
- """Attach an interface to the instance.
-
- :param instance: nova.objects.instance.Instance
+ """Use hotplug to add a network interface to a running instance.
+
+ The counter action to this is :func:`detach_interface`.
+
+ :param nova.objects.instance.Instance instance:
+ The instance which will get an additional network interface.
+ :param nova.objects.ImageMeta image_meta:
+ The metadata of the image of the instance.
+ :param nova.network.model.NetworkInfo vif:
+ The object which has the information about the interface to attach.
+
+ :raise nova.exception.NovaException: If the attach fails.
+
+ :return: None
"""
- raise NotImplementedError()
+ name = instance['name']
+ zone = self._get_zone_by_name(name)
+ if zone is None:
+ raise exception.InstanceNotFound(instance_id=name)
+
+ ctxt = nova_context.get_admin_context()
+ extra_specs = self._get_extra_specs(instance)
+ brand = extra_specs.get('zonecfg:brand', ZONE_BRAND_SOLARIS)
+ anetname = self._set_ovs_info(ctxt, zone, brand, False, vif)
+
+ # apply the configuration if the vm is ACTIVE
+ if instance['vm_state'] == vm_states.ACTIVE:
+ try:
+ zone.apply()
+ except Exception as ex:
+ reason = zonemgr_strerror(ex)
+ msg = (_("Unable to attach interface to instance '%s' via "
+ "zonemgr(3RAD): %s") % (name, reason))
+ with ZoneConfig(zone) as zc:
+ prop_filter = [zonemgr.Property('mac-address',
+ vif['address'])]
+ zc.removeresources('anet', prop_filter)
+ raise nova.exception.NovaException(msg)
+
+ # add port to ovs bridge
+ anet = ''.join([name, '/', anetname])
+ self._ovs_add_port(instance, vif, anet)
def detach_interface(self, instance, vif):
- """Detach an interface from the instance.
-
- :param instance: nova.objects.instance.Instance
+ """Use hotunplug to remove a network interface from a running instance.
+
+ The counter action to this is :func:`attach_interface`.
+
+ :param nova.objects.instance.Instance instance:
+ The instance which gets a network interface removed.
+ :param nova.network.model.NetworkInfo vif:
+ The object which has the information about the interface to detach.
+
+ :raise nova.exception.NovaException: If the detach fails.
+
+ :return: None
"""
- raise NotImplementedError()
+ name = instance['name']
+ zone = self._get_zone_by_name(name)
+ if zone is None:
+ raise exception.InstanceNotFound(instance_id=name)
+
+ # Check if the specific property value exists before attempting removal
+ resource = lookup_resource_property_value(zone, 'anet',
+ 'mac-address',
+ vif['address'])
+ if not resource:
+ msg = (_("Interface with MAC address '%s' is not attached to "
+ "instance '%s'.") % (vif['address'], name))
+ raise nova.exception.NovaException(msg)
+
+ extra_specs = self._get_extra_specs(instance)
+ brand = extra_specs.get('zonecfg:brand', ZONE_BRAND_SOLARIS)
+ for prop in resource.properties:
+ if brand == ZONE_BRAND_SOLARIS and prop.name == 'linkname':
+ anetname = prop.value
+ break
+ elif brand != ZONE_BRAND_SOLARIS and prop.name == 'id':
+ anetname = 'net%s' % prop.value
+ break
+
+ with ZoneConfig(zone) as zc:
+ zc.removeresources('anet', [zonemgr.Property('mac-address',
+ vif['address'])])
+
+ # apply the configuration if the vm is ACTIVE
+ if instance['vm_state'] == vm_states.ACTIVE:
+ try:
+ zone.apply()
+ except:
+ msg = (_("Unable to detach interface '%s' from running "
+ "instance '%s' because the resource is most likely "
+ "in use.") % (anetname, name))
+ needed_props = ["lower-link", "configure-allowed-address",
+ "mac-address", "mtu"]
+ if brand == ZONE_BRAND_SOLARIS:
+ needed_props.append("linkname")
+ else:
+ needed_props.append("id")
+
+ props = filter(lambda prop: prop.name in needed_props,
+ resource.properties)
+ with ZoneConfig(zone) as zc:
+ zc.addresource('anet', props)
+ raise nova.exception.NovaException(msg)
+
+ # remove anet from OVS bridge
+ port = ''.join([name, '/', anetname])
+ self._ovs_delete_port(port)
def _cleanup_migrate_disk(self, context, instance, volume):
"""Make a best effort at cleaning up the volume that was created to
@@ -2752,10 +2907,23 @@
"""Transfers the disk of a running instance in multiple phases, turning
off the instance before the end.
- :param instance: nova.objects.instance.Instance
- :param timeout: time to wait for GuestOS to shutdown
- :param retry_interval: How often to signal guest while
- waiting for it to shutdown
+ :param nova.objects.instance.Instance instance:
+ The instance whose disk should be migrated.
+ :param str dest:
+ The IP address of the destination host.
+ :param nova.objects.flavor.Flavor flavor:
+ The flavor of the instance whose disk get migrated.
+ :param nova.network.model.NetworkInfo network_info:
+ The network information of the given `instance`.
+ :param dict block_device_info:
+ Information about the block devices.
+ :param int timeout:
+ The time in seconds to wait for the guest OS to shutdown.
+ :param int retry_interval:
+ How often to signal guest while waiting for it to shutdown.
+
+ :return: A list of disk information dicts in JSON format.
+ :rtype: str
"""
LOG.debug("Starting migrate_disk_and_power_off", instance=instance)
@@ -2811,11 +2979,9 @@
raise exception.ResizeError(reason=msg)
vinfo = self._volume_api.get(context, volume_id)
- newvolume = self._volume_api.create(context, orgb,
- vinfo['display_name'] +
- '-resized',
- vinfo['display_description'],
- source_volume=vinfo)
+ newvolume = self._volume_api.create(
+ context, orgb, vinfo['display_name'] + '-resized',
+ vinfo['display_description'], source_volume=vinfo)
instance.system_metadata['old_instance_volid'] = volume_id
instance.system_metadata['new_instance_volid'] = newvolume['id']
@@ -2886,7 +3052,7 @@
metadata['disk_format'] = 'raw'
update_task_state(task_state=task_states.IMAGE_PENDING_UPLOAD)
- snapshot_directory = CONF.solariszones_snapshots_directory
+ snapshot_directory = CONF.solariszones.solariszones_snapshots_directory
fileutils.ensure_tree(snapshot_directory)
snapshot_name = uuid.uuid4().hex
@@ -2904,9 +3070,7 @@
task_state=task_states.IMAGE_UPLOADING,
expected_state=task_states.IMAGE_PENDING_UPLOAD)
with open(out_path, 'r') as image_file:
- snapshot_service.update(context,
- image_id,
- metadata,
+ snapshot_service.update(context, image_id, metadata,
image_file)
LOG.info(_("Snapshot image upload complete"),
instance=instance)
@@ -2916,10 +3080,7 @@
# glance server recognises them.
metadata['container_format'] = 'uar'
metadata['disk_format'] = 'zfs'
- snapshot_service.update(context,
- image_id,
- metadata,
- None)
+ snapshot_service.update(context, image_id, metadata, None)
except exception.Invalid:
LOG.warning(_("Image service rejected image metadata "
"container and disk formats 'uar' and "
@@ -2976,7 +3137,7 @@
def finish_migration(self, context, migration, instance, disk_info,
network_info, image_meta, resize_instance,
block_device_info=None, power_on=True):
- """Completes a resize.
+ """Completes a resize/migration.
:param context: the context for the migration/resize
:param migration: the migrate/resize information
@@ -2984,9 +3145,8 @@
:param disk_info: the newly transferred disk information
:param network_info:
:py:meth:`~nova.network.manager.NetworkManager.get_instance_nw_info`
- :param image_meta: image object returned by nova.image.glance that
- defines the image from which this instance
- was created
+ :param nova.objects.ImageMeta image_meta:
+ The metadata of the image of the instance.
:param resize_instance: True if the instance is being resized,
False otherwise
:param block_device_info: instance volume block device info
@@ -3023,8 +3183,8 @@
rgb = instance.root_gb
self._resize_disk_migration(context, instance,
root_ci['serial'],
- disk_info['id'],
- rgb, mount_dev)
+ disk_info['id'], rgb,
+ mount_dev)
else:
# No need to check disk_info here, because when not on the
@@ -3050,9 +3210,8 @@
bmap = block_device_info.get('block_device_mapping')
for entry in bmap:
if entry['mount_device'] != rootmp:
- self.attach_volume(context,
- entry['connection_info'], instance,
- entry['mount_device'])
+ self.attach_volume(context, entry['connection_info'],
+ instance, entry['mount_device'])
if power_on:
self._power_on(instance, network_info)
@@ -3081,7 +3240,7 @@
raise
def confirm_migration(self, context, migration, instance, network_info):
- """Confirms a resize, destroying the source VM.
+ """Confirms a resize/migration, destroying the source VM.
:param instance: nova.objects.instance.Instance
"""
@@ -3166,7 +3325,7 @@
def finish_revert_migration(self, context, instance, network_info,
block_device_info=None, power_on=True):
- """Finish reverting a resize.
+ """Finish reverting a resize/migration.
:param context: the context for the finish_revert_migration
:param instance: nova.objects.instance.Instance being migrated/resized
@@ -3217,26 +3376,52 @@
self._power_on(instance, network_info)
def pause(self, instance):
- """Pause the specified instance.
-
- :param instance: nova.objects.instance.Instance
+ """Pause the given instance.
+
+ A paused instance doesn't use CPU cycles of the host anymore. The
+ state of the VM could be stored in the memory or storage space of the
+ host, depending on the underlying hypervisor technology.
+ A "stronger" version of `pause` is :func:'suspend'.
+ The counter action for `pause` is :func:`unpause`.
+
+ :param nova.objects.instance.Instance instance:
+ The instance which should be paused.
+
+ :return: None
"""
# TODO(Vek): Need to pass context in for access to auth_token
raise NotImplementedError()
def unpause(self, instance):
- """Unpause paused VM instance.
-
- :param instance: nova.objects.instance.Instance
+ """Unpause the given paused instance.
+
+ The paused instance gets unpaused and will use CPU cycles of the
+ host again. The counter action for 'unpause' is :func:`pause`.
+ Depending on the underlying hypervisor technology, the guest has the
+ same state as before the 'pause'.
+
+ :param nova.objects.instance.Instance instance:
+ The instance which should be unpaused.
+
+ :return: None
"""
# TODO(Vek): Need to pass context in for access to auth_token
raise NotImplementedError()
def suspend(self, context, instance):
- """suspend the specified instance.
-
- :param context: the context for the suspend
- :param instance: nova.objects.instance.Instance
+ """Suspend the specified instance.
+
+ A suspended instance doesn't use CPU cycles or memory of the host
+ anymore. The state of the instance could be persisted on the host
+ and allocate storage space this way. A "softer" way of `suspend`
+ is :func:`pause`. The counter action for `suspend` is :func:`resume`.
+
+ :param nova.context.RequestContext context:
+ The context for the suspend.
+ :param nova.objects.instance.Instance instance:
+ The instance to suspend.
+
+ :return: None
"""
name = instance['name']
zone = self._get_zone_by_name(name)
@@ -3256,7 +3441,8 @@
raise exception.InstanceSuspendFailure(reason=reason)
try:
- new_path = os.path.join(CONF.zones_suspend_path, '%{zonename}')
+ new_path = os.path.join(CONF.solariszones.zones_suspend_path,
+ '%{zonename}')
if not lookup_resource(zone, 'suspend'):
# add suspend if not configured
self._set_suspend(instance)
@@ -3275,13 +3461,23 @@
raise exception.InstanceSuspendFailure(reason=reason)
def resume(self, context, instance, network_info, block_device_info=None):
- """resume the specified instance.
-
- :param context: the context for the resume
- :param instance: nova.objects.instance.Instance being resumed
- :param network_info:
- :py:meth:`~nova.network.manager.NetworkManager.get_instance_nw_info`
- :param block_device_info: instance volume block device info
+ """resume the specified suspended instance.
+
+ The suspended instance gets resumed and will use CPU cycles and memory
+ of the host again. The counter action for 'resume' is :func:`suspend`.
+ Depending on the underlying hypervisor technology, the guest has the
+ same state as before the 'suspend'.
+
+ :param nova.context.RequestContext context:
+ The context for the resume.
+ :param nova.objects.instance.Instance instance:
+ The suspended instance to resume.
+ :param nova.network.model.NetworkInfo network_info:
+ Necessary network information for the resume.
+ :param dict block_device_info:
+ Instance volume block device info.
+
+ :return: None
"""
name = instance['name']
zone = self._get_zone_by_name(name)
@@ -3331,7 +3527,15 @@
rescue_password):
"""Rescue the specified instance.
- :param instance: nova.objects.instance.Instance
+ :param nova.context.RequestContext context:
+ The context for the rescue.
+ :param nova.objects.instance.Instance instance:
+ The instance being rescued.
+ :param nova.network.model.NetworkInfo network_info:
+ Necessary network information for the resume.
+ :param nova.objects.ImageMeta image_meta:
+ The metadata of the image of the instance.
+ :param rescue_password: new root password to set for rescue.
"""
raise NotImplementedError()
@@ -3368,17 +3572,44 @@
"""
self._power_on(instance, network_info)
+ def trigger_crash_dump(self, instance):
+ """Trigger crash dump mechanism on the given instance.
+
+ Stalling instances can be triggered to dump the crash data. How the
+ guest OS reacts in details, depends on the configuration of it.
+
+ :param nova.objects.instance.Instance instance:
+ The instance where the crash dump should be triggered.
+
+ :return: None
+ """
+ raise NotImplementedError()
+
def soft_delete(self, instance):
"""Soft delete the specified instance.
- :param instance: nova.objects.instance.Instance
+ A soft-deleted instance doesn't allocate any resources anymore, but is
+ still available as a database entry. The counter action :func:`restore`
+ uses the database entry to create a new instance based on that.
+
+ :param nova.objects.instance.Instance instance:
+ The instance to soft-delete.
+
+ :return: None
"""
raise NotImplementedError()
def restore(self, instance):
- """Restore the specified instance.
-
- :param instance: nova.objects.instance.Instance
+ """Restore the specified soft-deleted instance.
+
+ The restored instance will be automatically booted. The counter action
+ for `restore` is :func:`soft_delete`.
+
+ :param nova.objects.instance.Instance instance:
+ The soft-deleted instance which should be restored from the
+ soft-deleted data.
+
+ :return: None
"""
raise NotImplementedError()
@@ -3401,7 +3632,9 @@
def _update_host_stats(self):
"""Update currently known host stats."""
host_stats = {}
+
host_stats['vcpus'] = os.sysconf('SC_NPROCESSORS_ONLN')
+
pages = os.sysconf('SC_PHYS_PAGES')
host_stats['memory_mb'] = self._pages_to_kb(pages) / 1024
@@ -3413,21 +3646,21 @@
else:
host_stats['local_gb'] = 0
- # Account for any existing processor sets by looking at the the
- # number of CPUs not assigned to any processor sets.
+ # Account for any existing processor sets by looking at the the number
+ # of CPUs not assigned to any processor sets.
kstat_data = self._get_kstat_by_name('misc', 'unix', '0', 'pset')
if kstat_data is not None:
- host_stats['vcpus_used'] = \
- host_stats['vcpus'] - kstat_data['ncpus']
+ unassigned = self._get_kstat_statistic(kstat_data, 'ncpus')
+ host_stats['vcpus_used'] = host_stats['vcpus'] - unassigned
else:
host_stats['vcpus_used'] = 0
- # Subtract the number of free pages from the total to get the
- # used.
+ # Subtract the number of free pages from the total to get the used.
kstat_data = self._get_kstat_by_name('pages', 'unix', '0',
'system_pages')
if kstat_data is not None:
- free_ram_mb = self._pages_to_kb(kstat_data['freemem']) / 1024
+ free_ram_mb = self._get_kstat_statistic(kstat_data, 'freemem')
+ free_ram_mb = self._pages_to_kb(free_ram_mb) / 1024
host_stats['memory_mb_used'] = \
host_stats['memory_mb'] - free_ram_mb
else:
@@ -3442,25 +3675,23 @@
host_stats['hypervisor_type'] = 'solariszones'
host_stats['hypervisor_version'] = \
- utils.convert_version_to_int(HYPERVISOR_VERSION)
+ versionutils.convert_version_to_int(HYPERVISOR_VERSION)
host_stats['hypervisor_hostname'] = self._uname[1]
if self._uname[4] == 'i86pc':
- architecture = 'x86_64'
+ architecture = arch.X86_64
else:
- architecture = 'sparc64'
+ architecture = arch.SPARC64
cpu_info = {
'arch': architecture
}
host_stats['cpu_info'] = jsonutils.dumps(cpu_info)
- host_stats['disk_available_least'] = 0
-
- supported_instances = [
- (architecture, 'solariszones', 'solariszones')
+ host_stats['disk_available_least'] = free_disk_gb
+ host_stats['supported_instances'] = [
+ (architecture, hv_type.SOLARISZONES, vm_mode.SOL)
]
- host_stats['supported_instances'] = \
- jsonutils.dumps(supported_instances)
+ host_stats['numa_topology'] = None
self._host_stats = host_stats
@@ -3491,6 +3722,7 @@
resources['cpu_info'] = host_stats['cpu_info']
resources['disk_available_least'] = host_stats['disk_available_least']
resources['supported_instances'] = host_stats['supported_instances']
+ resources['numa_topology'] = host_stats['numa_topology']
return resources
def pre_live_migration(self, context, instance, block_device_info,
@@ -3502,9 +3734,9 @@
:param block_device_info: instance block device information
:param network_info: instance network information
:param disk_info: instance disk information
- :param migrate_data: implementation specific data dict.
+ :param migrate_data: a LiveMigrateData object
"""
- return {}
+ return migrate_data
def _live_migration(self, name, dest, dry_run=False):
"""Live migration of a Solaris kernel zone to another host."""
@@ -3513,7 +3745,7 @@
raise exception.InstanceNotFound(instance_id=name)
options = []
- live_migration_cipher = CONF.live_migration_cipher
+ live_migration_cipher = CONF.solariszones.live_migration_cipher
if live_migration_cipher is not None:
options.extend(['-c', live_migration_cipher])
if dry_run:
@@ -3538,7 +3770,7 @@
recovery method when any exception occurs.
expected nova.compute.manager._rollback_live_migration.
:param block_migration: if true, migrate VM disk.
- :param migrate_data: implementation specific params.
+ :param migrate_data: a LiveMigrateData object
"""
name = instance['name']
@@ -3554,6 +3786,22 @@
post_method(context, instance, dest, block_migration, migrate_data)
+ def live_migration_force_complete(self, instance):
+ """Force live migration to complete
+
+ :param instance: Instance being live migrated
+
+ """
+ raise NotImplementedError()
+
+ def live_migration_abort(self, instance):
+ """Abort an in-progress live migration.
+
+ :param instance: instance that is live migrating
+
+ """
+ raise NotImplementedError()
+
def rollback_live_migration_at_destination(self, context, instance,
network_info,
block_device_info,
@@ -3567,7 +3815,7 @@
:param block_device_info: instance block device information
:param destroy_disks:
if true, destroy disks at destination during cleanup
- :param migrate_data: implementation specific params
+ :param migrate_data: a LiveMigrateData object
"""
pass
@@ -3579,7 +3827,7 @@
:param context: security context
:instance: instance object that was migrated
:block_device_info: instance block device information
- :param migrate_data: if not None, it is a dict which has data
+ :param migrate_data: a LiveMigrateData object
"""
try:
# These methods log if problems occur so no need to double log
@@ -3671,7 +3919,7 @@
:param dst_compute_info: Info about the receiving machine
:param block_migration: if true, prepare for block migration
:param disk_over_commit: if true, allow disk over commit
- :returns: a dict containing migration info (hypervisor-dependent)
+ :returns: a LiveMigrateData object (hypervisor-dependent)
"""
src_cpu_info = jsonutils.loads(src_compute_info['cpu_info'])
src_cpu_arch = src_cpu_info['arch']
@@ -3700,9 +3948,9 @@
reason = (_('Disk overcommit is not currently supported.'))
raise exception.MigrationPreCheckError(reason=reason)
- dest_check_data = {
- 'hypervisor_hostname': dst_compute_info['hypervisor_hostname']
- }
+ dest_check_data = objects.SolarisZonesLiveMigrateData()
+ dest_check_data.hypervisor_hostname = \
+ dst_compute_info['hypervisor_hostname']
return dest_check_data
def check_can_live_migrate_destination_cleanup(self, context,
@@ -3736,11 +3984,16 @@
:param instance: nova.db.sqlalchemy.models.Instance
:param dest_check_data: result of check_can_live_migrate_destination
:param block_device_info: result of _get_instance_block_device_info
- :returns: a dict containing migration info (hypervisor-dependent)
+ :returns: a LiveMigrateData object
"""
+ if not isinstance(dest_check_data, migrate_data_obj.LiveMigrateData):
+ obj = objects.SolarisZonesLiveMigrateData()
+ obj.from_legacy_dict(dest_check_data)
+ dest_check_data = obj
+
self._check_local_volumes_present(block_device_info)
name = instance['name']
- dest = dest_check_data['hypervisor_hostname']
+ dest = dest_check_data.hypervisor_hostname
try:
self._live_migration(name, dest, dry_run=True)
except Exception as ex:
@@ -3782,60 +4035,6 @@
# TODO(Vek): Need to pass context in for access to auth_token
raise NotImplementedError()
- def refresh_security_group_members(self, security_group_id):
- """This method is called when a security group is added to an instance.
-
- This message is sent to the virtualization drivers on hosts that are
- running an instance that belongs to a security group that has a rule
- that references the security group identified by `security_group_id`.
- It is the responsibility of this method to make sure any rules
- that authorize traffic flow with members of the security group are
- updated and any new members can communicate, and any removed members
- cannot.
-
- Scenario:
- * we are running on host 'H0' and we have an instance 'i-0'.
- * instance 'i-0' is a member of security group 'speaks-b'
- * group 'speaks-b' has an ingress rule that authorizes group 'b'
- * another host 'H1' runs an instance 'i-1'
- * instance 'i-1' is a member of security group 'b'
-
- When 'i-1' launches or terminates we will receive the message
- to update members of group 'b', at which time we will make
- any changes needed to the rules for instance 'i-0' to allow
- or deny traffic coming from 'i-1', depending on if it is being
- added or removed from the group.
-
- In this scenario, 'i-1' could just as easily have been running on our
- host 'H0' and this method would still have been called. The point was
- that this method isn't called on the host where instances of that
- group are running (as is the case with
- :py:meth:`refresh_security_group_rules`) but is called where references
- are made to authorizing those instances.
-
- An error should be raised if the operation cannot complete.
-
- """
- # TODO(Vek): Need to pass context in for access to auth_token
- raise NotImplementedError()
-
- def refresh_provider_fw_rules(self):
- """This triggers a firewall update based on database changes.
-
- When this is called, rules have either been added or removed from the
- datastore. You can retrieve rules with
- :py:meth:`nova.db.provider_fw_rule_get_all`.
-
- Provider rules take precedence over security group rules. If an IP
- would be allowed by a security group ingress rule, but blocked by
- a provider rule, then packets from the IP are dropped. This includes
- intra-project traffic in the case of the allow_project_net_traffic
- flag for the libvirt-derived classes.
-
- """
- # TODO(Vek): Need to pass context in for access to auth_token
- raise NotImplementedError()
-
def refresh_instance_security_rules(self, instance):
"""Refresh security group rules
@@ -3941,48 +4140,111 @@
pass
def poll_rebooting_instances(self, timeout, instances):
- """Poll for rebooting instances
-
- :param timeout: the currently configured timeout for considering
- rebooting instances to be stuck
- :param instances: instances that have been in rebooting state
- longer than the configured timeout
+ """Perform a reboot on all given 'instances'.
+
+ Reboots the given `instances` which are longer in the rebooting state
+ than `timeout` seconds.
+
+ :param int timeout:
+ The timeout (in seconds) for considering rebooting instances
+ to be stuck.
+ :param list instances:
+ A list of nova.objects.instance.Instance objects that have been
+ in rebooting state longer than the configured timeout.
+
+ :return: None
"""
# TODO(Vek): Need to pass context in for access to auth_token
raise NotImplementedError()
def host_power_action(self, action):
- """Reboots, shuts down or powers up the host."""
+ """Reboots, shuts down or powers up the host.
+
+ :param str action:
+ The action the host should perform. The valid actions are:
+ ""startup", "shutdown" and "reboot".
+
+ :return: The result of the power action
+ :rtype: : str
+ """
+
raise NotImplementedError()
def host_maintenance_mode(self, host, mode):
- """Start/Stop host maintenance window. On start, it triggers
- guest VMs evacuation.
+ """Start/Stop host maintenance window.
+
+ On start, it triggers the migration of all instances to other hosts.
+ Consider the combination with :func:`set_host_enabled`.
+
+ :param str host:
+ The name of the host whose maintenance mode should be changed.
+ :param bool mode:
+ If `True`, go into maintenance mode. If `False`, leave the
+ maintenance mode.
+
+ :return: "on_maintenance" if switched to maintenance mode or
+ "off_maintenance" if maintenance mode got left.
+ :rtype: str
"""
+
raise NotImplementedError()
def set_host_enabled(self, enabled):
- """Sets the specified host's ability to accept new instances."""
+ """Sets the ability of this host to accept new instances.
+
+ :param bool enabled:
+ If this is `True`, the host will accept new instances. If it is
+ `False`, the host won't accept new instances.
+
+ :return: If the host can accept further instances, return "enabled",
+ if further instances shouldn't be scheduled to this host,
+ return "disabled".
+ :rtype: str
+ """
# TODO(Vek): Need to pass context in for access to auth_token
raise NotImplementedError()
def get_host_uptime(self):
- """Returns the result of calling "uptime" on the target host."""
+ """Returns the result of calling the Linux command `uptime` on this
+ host.
+
+ :return: A text which contains the uptime of this host since the
+ last boot.
+ :rtype: str
+ """
# TODO(Vek): Need to pass context in for access to auth_token
return utils.execute('/usr/bin/uptime')[0]
def plug_vifs(self, instance, network_info):
- """Plug VIFs into networks.
-
- :param instance: nova.objects.instance.Instance
+ """Plug virtual interfaces (VIFs) into the given `instance` at
+ instance boot time.
+
+ The counter action is :func:`unplug_vifs`.
+
+ :param nova.objects.instance.Instance instance:
+ The instance which gets VIFs plugged.
+ :param nova.network.model.NetworkInfo network_info:
+ The object which contains information about the VIFs to plug.
+
+ :return: None
"""
# TODO(Vek): Need to pass context in for access to auth_token
pass
def unplug_vifs(self, instance, network_info):
- """Unplug VIFs from networks.
-
- :param instance: nova.objects.instance.Instance
+ # NOTE(markus_z): 2015-08-18
+ # The compute manager doesn't use this interface, which seems odd
+ # since the manager should be the controlling thing here.
+ """Unplug virtual interfaces (VIFs) from networks.
+
+ The counter action is :func:`plug_vifs`.
+
+ :param nova.objects.instance.Instance instance:
+ The instance which gets VIFs unplugged.
+ :param nova.network.model.NetworkInfo network_info:
+ The object which contains information about the VIFs to unplug.
+
+ :return: None
"""
raise NotImplementedError()
@@ -4070,7 +4332,7 @@
This is called during spawn_instance by the compute manager.
- Note that the format of the return value is specific to Quantum
+ Note that the format of the return value is specific to the Neutron
client API.
:return: None, or a set of DHCP options, eg:
@@ -4099,12 +4361,40 @@
pass
def add_to_aggregate(self, context, aggregate, host, **kwargs):
- """Add a compute host to an aggregate."""
+ """Add a compute host to an aggregate.
+
+ The counter action to this is :func:`remove_from_aggregate`
+
+ :param nova.context.RequestContext context:
+ The security context.
+ :param nova.objects.aggregate.Aggregate aggregate:
+ The aggregate which should add the given `host`
+ :param str host:
+ The name of the host to add to the given `aggregate`.
+ :param dict kwargs:
+ A free-form thingy...
+
+ :return: None
+ """
# NOTE(jogo) Currently only used for XenAPI-Pool
raise NotImplementedError()
def remove_from_aggregate(self, context, aggregate, host, **kwargs):
- """Remove a compute host from an aggregate."""
+ """Remove a compute host from an aggregate.
+
+ The counter action to this is :func:`add_to_aggregate`
+
+ :param nova.context.RequestContext context:
+ The security context.
+ :param nova.objects.aggregate.Aggregate aggregate:
+ The aggregate which should remove the given `host`
+ :param str host:
+ The name of the host to remove from the given `aggregate`.
+ :param dict kwargs:
+ A free-form thingy...
+
+ :return: None
+ """
raise NotImplementedError()
def undo_aggregate_operation(self, context, op, aggregate,
@@ -4129,8 +4419,10 @@
}
"""
- connector = {'ip': self.get_host_ip_addr(),
- 'host': CONF.host}
+ connector = {
+ 'ip': self.get_host_ip_addr(),
+ 'host': CONF.host
+ }
if not self._initiator:
self._initiator = self._get_iscsi_initiator()
@@ -4201,9 +4493,8 @@
of access to instance shared disk files
"""
bdmobj = objects.BlockDeviceMappingList
- bdms = bdmobj.get_by_instance_uuid(
- nova_context.get_admin_context(),
- instance['uuid'])
+ bdms = bdmobj.get_by_instance_uuid(nova_context.get_admin_context(),
+ instance['uuid'])
root_ci = None
rootmp = instance['root_device_name']
@@ -4286,10 +4577,14 @@
create_info):
"""Snapshots volumes attached to a specified instance.
- :param context: request context
- :param instance: nova.objects.instance.Instance that has the volume
- attached
- :param volume_id: Volume to be snapshotted
+ The counter action to this is :func:`volume_snapshot_delete`
+
+ :param nova.context.RequestContext context:
+ The security context.
+ :param nova.objects.instance.Instance instance:
+ The instance that has the volume attached
+ :param uuid volume_id:
+ Volume to be snapshotted
:param create_info: The data needed for nova to be able to attach
to the volume. This is the same data format returned by
Cinder's initialize_connection() API call. In the case of
@@ -4302,22 +4597,38 @@
def volume_snapshot_delete(self, context, instance, volume_id,
snapshot_id, delete_info):
- """Snapshots volumes attached to a specified instance.
-
- :param context: request context
- :param instance: nova.objects.instance.Instance that has the volume
- attached
- :param volume_id: Attached volume associated with the snapshot
- :param snapshot_id: The snapshot to delete.
- :param delete_info: Volume backend technology specific data needed to
- be able to complete the snapshot. For example, in the case of
- qcow2 backed snapshots, this would include the file being
- merged, and the file being merged into (if appropriate).
+ """Deletes a snapshot of a volume attached to a specified instance.
+
+ The counter action to this is :func:`volume_snapshot_create`
+
+ :param nova.context.RequestContext context:
+ The security context.
+ :param nova.objects.instance.Instance instance:
+ The instance that has the volume attached.
+ :param uuid volume_id:
+ Attached volume associated with the snapshot
+ :param uuid snapshot_id:
+ The snapshot to delete.
+ :param dict delete_info:
+ Volume backend technology specific data needed to be able to
+ complete the snapshot. For example, in the case of qcow2 backed
+ snapshots, this would include the file being merged, and the file
+ being merged into (if appropriate).
+
+ :return: None
"""
raise NotImplementedError()
def default_root_device_name(self, instance, image_meta, root_bdm):
- """Provide a default root device name for the driver."""
+ """Provide a default root device name for the driver.
+
+ :param nova.objects.instance.Instance instance:
+ The instance to get the root device for.
+ :param nova.objects.ImageMeta image_meta:
+ The metadata of the image of the instance.
+ :param nova.objects.BlockDeviceMapping root_bdm:
+ The description of the root device.
+ """
raise NotImplementedError()
def default_device_names_for_instance(self, instance, root_device_name,
@@ -4325,6 +4636,23 @@
"""Default the missing device names in the block device mapping."""
raise NotImplementedError()
+ def get_device_name_for_instance(self, instance,
+ bdms, block_device_obj):
+ """Get the next device name based on the block device mapping.
+
+ :param instance: nova.objects.instance.Instance that volume is
+ requesting a device name
+ :param bdms: a nova.objects.BlockDeviceMappingList for the instance
+ :param block_device_obj: A nova.objects.BlockDeviceMapping instance
+ with all info about the requested block
+ device. device_name does not need to be set,
+ and should be decided by the driver
+ implementation if not set.
+
+ :returns: The chosen device name.
+ """
+ raise NotImplementedError()
+
def is_supported_fs_format(self, fs_type):
"""Check whether the file format is supported by this driver
@@ -4346,9 +4674,8 @@
:param context: request context
:param instance: nova.objects.instance.Instance to be quiesced
- :param image_meta: image object returned by nova.image.glance that
- defines the image from which this instance
- was created
+ :param nova.objects.ImageMeta image_meta:
+ The metadata of the image of the instance.
"""
raise NotImplementedError()
@@ -4361,8 +4688,17 @@
:param context: request context
:param instance: nova.objects.instance.Instance to be unquiesced
- :param image_meta: image object returned by nova.image.glance that
- defines the image from which this instance
- was created
+ :param nova.objects.ImageMeta image_meta:
+ The metadata of the image of the instance.
"""
raise NotImplementedError()
+
+ def network_binding_host_id(self, context, instance):
+ """Get host ID to associate with network ports.
+
+ :param context: request context
+ :param instance: nova.objects.instance.Instance that the network
+ ports will be associated with
+ :returns: a string representing the host ID
+ """
+ return instance.get('host')
--- a/components/openstack/nova/files/solariszones/sysconfig.py Wed Sep 07 14:48:42 2016 -0700
+++ b/components/openstack/nova/files/solariszones/sysconfig.py Wed Sep 07 14:48:42 2016 -0700
@@ -1,6 +1,6 @@
# vim: tabstop=4 shiftwidth=4 softtabstop=4
-# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2016, Oracle and/or its affiliates. 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
@@ -27,7 +27,7 @@
def create_ncp_defaultfixed(addrtype, linkname, netid, ip_version, ip=None,
- route=None, nameservers=None):
+ route=None, nameservers=None, host_routes=None):
""" return an etree object representing fixed (static) networking
"""
svcbundle = etree.Element("service_bundle", type="profile",
@@ -109,6 +109,26 @@
etree.SubElement(pg6, "propval", type="astring",
name="stateful", value="yes")
+ if host_routes:
+ # create the host-routes profile
+ for i, host_route in enumerate(host_routes):
+ hr_dest = host_route['cidr']
+ hr_gw = host_route['gateway']['address']
+ hr_pg_name = "route_%d_%d" % (netid, i)
+ hr_ip_version = host_route['gateway']['version']
+ if hr_ip_version == 4:
+ hr_pg_type = "ipv4_route"
+ hr_pval_type = "net_address_v4"
+ else:
+ hr_pg_type = "ipv6_route"
+ hr_pval_type = "net_address_v6"
+ pg = etree.SubElement(instance, "property_group", type=hr_pg_type,
+ name=hr_pg_name)
+ etree.SubElement(pg, "propval", type=hr_pval_type,
+ name="destination", value=hr_dest)
+ etree.SubElement(pg, "propval", type=hr_pval_type,
+ name="gateway", value=hr_gw)
+
# create DNS profile for static configurations
if addrtype == "static" and nameservers is not None:
dns = etree.SubElement(svcbundle, "service", version="1",
@@ -133,25 +153,6 @@
return svcbundle
-def create_ncp_automatic():
- """ return an etree object representing dynamic networking
- """
- svcbundle = etree.Element("service_bundle", type="profile",
- name="openstack")
-
- # create the network/physical service profile
- physical = etree.SubElement(svcbundle, "service", version="1",
- type="service", name="network/physical")
- instance = etree.SubElement(physical, "instance", enabled="true",
- name="default")
- pg = etree.SubElement(instance, "property_group", type="application",
- name="netcfg")
- etree.SubElement(pg, "propval", type="astring", name="active_ncp",
- value="Automatic")
-
- return svcbundle
-
-
def create_default_root_account(expire=None, sshkey=None, password=None):
""" return an etree object representing the root account
"""
--- a/components/openstack/nova/files/zone-vnc-console Wed Sep 07 14:48:42 2016 -0700
+++ b/components/openstack/nova/files/zone-vnc-console Wed Sep 07 14:48:42 2016 -0700
@@ -1,6 +1,6 @@
#!/usr/bin/python2.7
-# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. 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
@@ -20,14 +20,15 @@
import fcntl
import os
import pwd
-import smf_include
import socket
import subprocess
import sys
import tempfile
import time
-from oslo_config import cfg
+import smf_include
+
+import nova.conf
GTF = "/usr/bin/gtf"
SVCADM = "/usr/sbin/svcadm"
@@ -55,8 +56,7 @@
ZLOGINOPTS = ' -e "/usr/bin/pfexec /usr/sbin/zlogin -C -E $ZONENAME"\n'
XSTARTUP = XSTARTUPHDR + XRESOURCES + XTERM + XTERMOPTS + ZLOGINOPTS
-CONF = cfg.CONF
-CONF.import_opt('vncserver_listen', 'nova.vnc')
+CONF = nova.conf.CONF
def start():
@@ -95,9 +95,9 @@
novacfg = ConfigParser.RawConfigParser()
novacfg.readfp(open(NOVACFG))
try:
- vnc_listenip = novacfg.get("DEFAULT", "vncserver_listen")
+ vnc_listenip = novacfg.get("vnc", "vncserver_listen")
except ConfigParser.NoOptionError:
- vnc_listenip = CONF.vncserver_listen
+ vnc_listenip = CONF.vnc.vncserver_listen
with lock_available_port(vnc_listenip, VNCPORT_START, VNCPORT_END,
homedir) as n:
--- a/components/openstack/nova/nova.p5m Wed Sep 07 14:48:42 2016 -0700
+++ b/components/openstack/nova/nova.p5m Wed Sep 07 14:48:42 2016 -0700
@@ -28,7 +28,7 @@
set name=pkg.summary value="OpenStack Nova (Compute Service)"
set name=pkg.description \
value="OpenStack Nova provides a cloud computing fabric controller, supporting a wide variety of virtualization technologies. In addition to its native API, it includes compatibility with the commonly encountered Amazon EC2 and S3 APIs."
-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="Nova, the OpenStack compute service"
set name=com.oracle.info.tpno value=$(TPNO)
set name=info.classification \
@@ -43,11 +43,12 @@
set name=org.opensolaris.arc-caseid value=PSARC/2013/350 value=PSARC/2014/049 \
value=PSARC/2014/210 value=PSARC/2015/110 value=PSARC/2015/324 \
value=PSARC/2015/357 value=PSARC/2015/535 value=PSARC/2016/031 \
- value=PSARC/2016/172 value=PSARC/2016/242 value=PSARC/2016/251
+ value=PSARC/2016/172 value=PSARC/2016/242 value=PSARC/2016/251 \
+ value=PSARC/2016/268 value=PSARC/2016/455
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
set name=variant.debug.container value=false value=true
+#
dir path=etc/nova owner=nova group=nova mode=0700
-#
file path=etc/nova/api-paste.ini owner=nova group=nova mode=0644 overlay=allow \
preserve=renamenew
file path=etc/nova/cells.json owner=nova group=nova mode=0644 overlay=allow \
@@ -66,7 +67,6 @@
file files/nova.prof_attr path=etc/security/prof_attr.d/cloud:openstack:nova \
group=sys
file files/nova.user_attr path=etc/user_attr.d/cloud:openstack:nova group=sys
-file path=lib/svc/manifest/application/openstack/nova-api-ec2.xml
file path=lib/svc/manifest/application/openstack/nova-api-metadata.xml
file path=lib/svc/manifest/application/openstack/nova-api-osapi-compute.xml
file path=lib/svc/manifest/application/openstack/nova-cert.xml
@@ -74,7 +74,6 @@
file path=lib/svc/manifest/application/openstack/nova-conductor.xml
file path=lib/svc/manifest/application/openstack/nova-consoleauth.xml
file path=lib/svc/manifest/application/openstack/nova-novncproxy.xml
-file path=lib/svc/manifest/application/openstack/nova-objectstore.xml
file path=lib/svc/manifest/application/openstack/nova-scheduler.xml
file path=lib/svc/manifest/application/openstack/nova-upgrade.xml
file path=lib/svc/manifest/application/openstack/zone-vnc-console.xml
@@ -84,12 +83,10 @@
file files/nova-conductor path=lib/svc/method/nova-conductor
file files/nova-consoleauth path=lib/svc/method/nova-consoleauth
file files/nova-novncproxy path=lib/svc/method/nova-novncproxy
-file files/nova-objectstore path=lib/svc/method/nova-objectstore
file files/nova-scheduler path=lib/svc/method/nova-scheduler
file files/nova-upgrade path=lib/svc/method/nova-upgrade
file files/zone-vnc-console path=lib/svc/method/zone-vnc-console
file path=usr/bin/nova-manage
-file usr/bin/nova-api-ec2 path=usr/lib/nova/nova-api-ec2 mode=0555
file usr/bin/nova-api-metadata path=usr/lib/nova/nova-api-metadata mode=0555
file usr/bin/nova-api-os-compute path=usr/lib/nova/nova-api-os-compute mode=0555
file usr/bin/nova-cells path=usr/lib/nova/nova-cells mode=0555
@@ -99,7 +96,6 @@
file usr/bin/nova-console path=usr/lib/nova/nova-console mode=0555
file usr/bin/nova-consoleauth path=usr/lib/nova/nova-consoleauth mode=0555
file usr/bin/nova-novncproxy path=usr/lib/nova/nova-novncproxy mode=0555
-file usr/bin/nova-objectstore path=usr/lib/nova/nova-objectstore mode=0555
file usr/bin/nova-scheduler path=usr/lib/nova/nova-scheduler mode=0555
file usr/bin/nova-serialproxy path=usr/lib/nova/nova-serialproxy mode=0555
file usr/bin/nova-spicehtml5proxy path=usr/lib/nova/nova-spicehtml5proxy \
@@ -121,11 +117,8 @@
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/auth.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/compute_req_id.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/ec2/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/ec2/apirequest.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/ec2/cloud.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/ec2/ec2utils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/ec2/faults.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/ec2/inst_state.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/manager.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/metadata/__init__.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/metadata/base.py
@@ -137,243 +130,242 @@
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/auth.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/common.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/access_ips.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/admin_actions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/admin_password.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/agents.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/aggregates.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/assisted_volume_snapshots.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/attach_interfaces.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/availability_zone.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/baremetal_nodes.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/block_device_mapping.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/block_device_mapping_v1.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/cells.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/certificates.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/cloudpipe.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/config_drive.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/console_auth_tokens.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/console_output.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/consoles.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/admin_actions.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/agents.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/aggregates.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/assisted_volume_snapshots.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/attach_interfaces.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/availability_zone.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/baremetal_ext_status.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/baremetal_nodes.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/block_device_mapping_v2_boot.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/cell_capacities.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/cells.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/certificates.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/cloudpipe.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/cloudpipe_update.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/config_drive.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/console_auth_tokens.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/console_output.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/consoles.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/createserverext.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/deferred_delete.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/disk_config.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/evacuate.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/extended_availability_zone.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/extended_evacuate_find_host.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/extended_floating_ips.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/extended_hypervisors.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/extended_ips.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/extended_ips_mac.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/extended_networks.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/extended_quotas.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/extended_rescue_with_image.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/extended_server_attributes.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/extended_services.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/extended_services_delete.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/extended_status.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/extended_virtual_interfaces_net.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/extended_volumes.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/fixed_ips.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/flavor_access.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/flavor_disabled.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/flavor_rxtx.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/flavor_swap.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/flavorextradata.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/flavorextraspecs.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/flavormanage.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/floating_ip_dns.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/floating_ip_pools.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/floating_ips.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/floating_ips_bulk.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/fping.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/hide_server_addresses.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/hosts.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/hypervisor_status.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/hypervisors.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/image_size.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/instance_actions.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/instance_usage_audit_log.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/keypairs.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/migrations.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/multinic.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/multiple_create.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/networks_associate.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/os_networks.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/os_tenant_networks.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/preserve_ephemeral_rebuild.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/quota_classes.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/quotas.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/rescue.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/scheduler_hints.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/security_group_default_rules.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/security_groups.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/server_diagnostics.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/server_external_events.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/server_group_quotas.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/server_groups.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/server_list_multi_status.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/server_password.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/server_sort_keys.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/server_start_stop.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/server_usage.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/services.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/shelve.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/simple_tenant_usage.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/used_limits.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/used_limits_for_admin.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/user_data.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/user_quotas.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/virtual_interfaces.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/volume_attachment_update.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/contrib/volumes.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/extensions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/create_backup.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/deferred_delete.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/disk_config.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/evacuate.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/extended_availability_zone.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/extended_server_attributes.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/extended_status.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/extended_volumes.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/extension_info.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/fixed_ips.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/flavor_access.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/flavor_manage.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/flavor_rxtx.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/flavors.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/flavors_extraspecs.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/floating_ip_dns.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/floating_ip_pools.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/floating_ips.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/floating_ips_bulk.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/fping.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/hide_server_addresses.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/hosts.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/hypervisors.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/image_metadata.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/image_size.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/images.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/instance_actions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/instance_usage_audit_log.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/ips.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/keypairs.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/consoles.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/admin_actions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/agents.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/aggregates.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/assisted_volume_snapshots.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/attach_interfaces.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/availability_zone.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/baremetal_ext_status.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/baremetal_nodes.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/block_device_mapping_v2_boot.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/cell_capacities.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/cells.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/certificates.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/cloudpipe.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/cloudpipe_update.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/config_drive.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/console_auth_tokens.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/console_output.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/consoles.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/createserverext.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/deferred_delete.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/disk_config.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/evacuate.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/extended_availability_zone.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/extended_evacuate_find_host.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/extended_floating_ips.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/extended_hypervisors.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/extended_ips.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/extended_ips_mac.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/extended_networks.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/extended_quotas.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/extended_rescue_with_image.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/extended_server_attributes.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/extended_services.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/extended_services_delete.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/extended_status.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/extended_virtual_interfaces_net.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/extended_volumes.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/fixed_ips.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/flavor_access.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/flavor_disabled.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/flavor_rxtx.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/flavor_swap.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/flavorextradata.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/flavorextraspecs.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/flavormanage.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/floating_ip_dns.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/floating_ip_pools.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/floating_ips.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/floating_ips_bulk.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/fping.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/hide_server_addresses.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/hosts.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/hypervisor_status.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/hypervisors.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/image_size.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/instance_actions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/instance_usage_audit_log.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/keypairs.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/migrations.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/multinic.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/multiple_create.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/networks_associate.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/os_networks.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/os_tenant_networks.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/preserve_ephemeral_rebuild.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/quota_classes.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/quotas.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/rescue.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/scheduler_hints.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/security_group_default_rules.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/security_groups.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/server_diagnostics.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/server_external_events.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/server_group_quotas.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/server_groups.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/server_list_multi_status.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/server_password.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/server_sort_keys.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/server_start_stop.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/server_usage.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/services.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/shelve.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/simple_tenant_usage.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/used_limits.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/used_limits_for_admin.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/user_data.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/user_quotas.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/virtual_interfaces.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/volume_attachment_update.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/contrib/volumes.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/extensions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/flavors.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/image_metadata.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/images.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/ips.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/limits.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/server_metadata.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/servers.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/legacy_v2/versions.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/limits.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/access_ips.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/admin_actions.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/admin_password.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/agents.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/aggregates.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/assisted_volume_snapshots.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/attach_interfaces.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/availability_zone.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/baremetal_nodes.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/block_device_mapping.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/block_device_mapping_v1.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/cells.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/certificates.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/cloudpipe.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/config_drive.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/console_auth_tokens.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/console_output.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/consoles.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/create_backup.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/deferred_delete.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/disk_config.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/evacuate.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/extended_availability_zone.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/extended_server_attributes.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/extended_status.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/extended_volumes.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/extension_info.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/fixed_ips.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/flavor_access.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/flavor_manage.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/flavor_rxtx.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/flavors.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/floating_ip_dns.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/floating_ip_pools.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/floating_ips.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/floating_ips_bulk.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/fping.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/hide_server_addresses.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/hosts.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/hypervisors.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/image_metadata.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/image_size.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/images.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/instance_actions.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/instance_usage_audit_log.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/ips.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/keypairs.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/limits.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/lock_server.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/migrate_server.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/migrations.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/multinic.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/multiple_create.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/networks.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/networks_associate.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/pause_server.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/pci.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/personality.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/preserve_ephemeral_rebuild.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/quota_classes.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/quota_sets.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/remote_consoles.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/rescue.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/scheduler_hints.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/security_group_default_rules.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/security_groups.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/server_diagnostics.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/server_external_events.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/server_groups.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/server_metadata.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/server_password.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/server_usage.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/servers.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/services.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/shelve.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/simple_tenant_usage.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/suspend_server.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/tenant_networks.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/used_limits.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/user_data.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/versions.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/virtual_interfaces.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/plugins/v3/volumes.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/lock_server.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/migrate_server.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/migrations.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/multinic.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/multiple_create.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/networks.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/networks_associate.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/pause_server.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/pci.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/personality.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/preserve_ephemeral_rebuild.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/quota_classes.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/quota_sets.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/remote_consoles.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/rescue.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/scheduler_hints.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/access_ips.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/admin_password.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/agents.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/aggregates.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/assisted_volume_snapshots.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/attach_interfaces.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/availability_zone.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/block_device_mapping.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/block_device_mapping_v1.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/cells.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/cloudpipe.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/config_drive.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/console_output.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/create_backup.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/disk_config.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/evacuate.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/fixed_ips.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/flavor_access.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/flavor_manage.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/flavors_extraspecs.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/floating_ip_dns.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/floating_ips.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/floating_ips_bulk.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/hosts.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/image_metadata.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/keypairs.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/migrate_server.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/multinic.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/multiple_create.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/networks.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/networks_associate.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/personality.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/preserve_ephemeral_rebuild.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/quota_classes.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/quota_sets.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/remote_consoles.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/rescue.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/reset_server_state.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/scheduler_hints.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/security_groups.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/server_external_events.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/server_groups.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/server_metadata.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/servers.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/services.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/tenant_networks.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/user_data.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v3/volumes.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/access_ips.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/admin_password.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/agents.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/aggregates.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/assisted_volume_snapshots.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/attach_interfaces.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/availability_zone.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/block_device_mapping.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/block_device_mapping_v1.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/cells.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/cloudpipe.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/config_drive.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/console_output.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/create_backup.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/disk_config.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/evacuate.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/fixed_ips.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/flavor_access.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/flavor_manage.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/flavors_extraspecs.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/floating_ip_dns.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/floating_ips.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/floating_ips_bulk.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/hosts.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/image_metadata.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/keypairs.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/migrate_server.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/multinic.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/multiple_create.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/networks.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/networks_associate.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/personality.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/preserve_ephemeral_rebuild.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/quota_classes.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/quota_sets.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/remote_consoles.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/rescue.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/reset_server_state.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/scheduler_hints.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/security_groups.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/server_external_events.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/server_groups.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/server_metadata.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/server_migrations.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/servers.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/services.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/tenant_networks.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/user_data.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/volumes.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/security_group_default_rules.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/security_groups.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/server_diagnostics.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/server_external_events.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/server_groups.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/server_metadata.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/server_migrations.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/server_password.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/server_usage.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/servers.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/services.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/shelve.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/simple_tenant_usage.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/suspend_server.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/tenant_networks.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/used_limits.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/user_data.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/versions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/versionsV21.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/views/__init__.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/views/addresses.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/views/flavors.py
@@ -381,11 +373,14 @@
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/views/limits.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/views/servers.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/views/versions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/virtual_interfaces.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/volumes.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/extensions.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/rest_api_version_history.rst
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/urlmap.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/versioned_method.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/wsgi.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/opts.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/sizelimit.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/validation/__init__.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/validation/parameter_types.py
@@ -394,9 +389,11 @@
file path=usr/lib/python$(PYVER)/vendor-packages/nova/availability_zones.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/baserpc.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/block_device.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/cache_utils.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/cells/__init__.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/cells/driver.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/cells/filters/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/cells/filters/different_cell.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/cells/filters/image_properties.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/cells/filters/target_cell.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/cells/manager.py
@@ -421,7 +418,6 @@
file path=usr/lib/python$(PYVER)/vendor-packages/nova/cmd/__init__.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/cmd/all.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/cmd/api.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/cmd/api_ec2.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/cmd/api_metadata.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/cmd/api_os_compute.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/cmd/baseproxy.py
@@ -437,11 +433,12 @@
file path=usr/lib/python$(PYVER)/vendor-packages/nova/cmd/network.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/cmd/novnc.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/cmd/novncproxy.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/cmd/objectstore.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/cmd/scheduler.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/cmd/serialproxy.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/cmd/spicehtml5proxy.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/cmd/xvpvncproxy.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/common/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/common/config.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/__init__.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/api.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/arch.py
@@ -454,14 +451,14 @@
file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/instance_actions.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/manager.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/monitors/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/monitors/cpu_monitor.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/monitors/virt/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/monitors/virt/cpu_monitor.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/monitors/base.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/monitors/cpu/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/monitors/cpu/virt_driver.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/opts.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/power_state.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/resource_tracker.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/resources/__init__.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/resources/base.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/resources/vcpu.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/rpcapi.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/stats.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/task_states.py
@@ -473,7 +470,24 @@
file path=usr/lib/python$(PYVER)/vendor-packages/nova/conductor/manager.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/conductor/rpcapi.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/conductor/tasks/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/conductor/tasks/base.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/conductor/tasks/live_migrate.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/conductor/tasks/migrate.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/conf/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/conf/availability_zone.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/conf/cells.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/conf/cert.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/conf/compute.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/conf/conductor.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/conf/ephemeral_storage.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/conf/ironic.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/conf/opts.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/conf/pci.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/conf/scheduler.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/conf/serial_console.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/conf/virt.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/conf/vnc.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/conf/wsgi.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/config.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/console/__init__.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/console/api.py
@@ -482,14 +496,11 @@
file path=usr/lib/python$(PYVER)/vendor-packages/nova/console/rpcapi.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/console/serial.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/console/type.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/console/vmrc_manager.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/console/websocketproxy.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/console/xvp.conf.template
file path=usr/lib/python$(PYVER)/vendor-packages/nova/console/xvp.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/consoleauth/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/consoleauth/manager.py \
- pkg.depend.bypass-generate=.*/oslo_log.* \
- pkg.depend.bypass-generate=.*/oslo_messaging.*
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/consoleauth/manager.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/consoleauth/rpcapi.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/context.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/crypto.py
@@ -505,6 +516,11 @@
file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/api_migrations/migrate_repo/migrate.cfg
file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/api_migrations/migrate_repo/versions/001_cell_mapping.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/api_migrations/migrate_repo/versions/002_instance_mapping.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/api_migrations/migrate_repo/versions/003_host_mapping.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/api_migrations/migrate_repo/versions/004_add_request_spec.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/api_migrations/migrate_repo/versions/005_flavors.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/api_migrations/migrate_repo/versions/006_build_request.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/api_migrations/migrate_repo/versions/007_instance_mapping_nullable_cellid.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/api_migrations/migrate_repo/versions/__init__.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/api_models.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/README
@@ -542,7 +558,6 @@
file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/244_increase_user_id_length_volume_usage_cache.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/245_add_mtu_and_dhcp_server.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/246_add_compute_node_id_fk.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/246_sqlite_downgrade.sql
file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/246_sqlite_upgrade.sql
file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/247_nullable_mismatch.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/248_add_expire_reservations_index.py
@@ -578,6 +593,45 @@
file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/278_remove_service_fk_in_compute_nodes.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/279_fix_unique_constraint_for_compute_node.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/280_add_nullable_false_to_keypairs_name.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/281_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/282_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/283_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/284_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/285_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/286_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/287_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/288_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/289_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/290_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/291_enforce_flavors_migrated.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/292_drop_nova_volumes_tables.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/293_add_migration_type.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/294_add_service_heartbeat.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/295_add_virtual_interfaces_uuid_index.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/296_add_missing_db2_fkeys.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/297_add_forced_down_for_services.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/298_mysql_extra_specs_binary_collation.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/299_service_version_number.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/300_migration_context.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/301_add_cpu_and_ram_ratios_for_compute_nodes.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/302_pgsql_add_instance_system_metadata_index.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/303_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/304_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/305_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/306_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/307_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/308_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/309_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/310_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/311_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/312_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/313_add_parent_id_column.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/314_add_resource_provider_tables.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/315_add_migration_progresss_detail.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/316_add_disk_ratio_for_compute_nodes.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/317_add_aggregate_uuid.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/318_resource_provider_name_aggregates.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/319_add_instances_deleted_created_at_index.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/__init__.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migration.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/models.py
@@ -611,6 +665,7 @@
file path=usr/lib/python$(PYVER)/vendor-packages/nova/keymgr/single_key_mgr.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/loadables.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/manager.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/mks/__init__.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/netconf.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/network/__init__.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/network/api.py
@@ -628,6 +683,7 @@
file path=usr/lib/python$(PYVER)/vendor-packages/nova/network/neutronv2/api.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/network/neutronv2/constants.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/network/noop_dns_driver.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/network/opts.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/network/rpcapi.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/network/security_group/__init__.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/network/security_group/neutron_driver.py
@@ -641,6 +697,7 @@
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/bandwidth_usage.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/base.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/block_device.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/build_request.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/cell_mapping.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/compute_node.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/dns_domain.py
@@ -650,7 +707,9 @@
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/fixed_ip.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/flavor.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/floating_ip.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/host_mapping.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/hv_spec.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/image_meta.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/instance.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/instance_action.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/instance_fault.py
@@ -660,74 +719,36 @@
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/instance_numa_topology.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/instance_pci_requests.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/keypair.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/migrate_data.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/migration.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/migration_context.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/monitor_metric.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/network.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/network_request.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/notification.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/numa.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/pci_device.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/pci_device_pool.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/quotas.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/request_spec.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/resource_provider.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/security_group.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/security_group_rule.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/service.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/tag.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/task_log.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/vcpu_model.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/virt_cpu_topology.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/virtual_interface.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/objectstore/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/objectstore/s3server.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/volume_usage.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/__init__.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/README
file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/__init__.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/_i18n.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/cliutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/config/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/config/generator.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/eventlet_backdoor.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/fileutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/imageutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/local.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/loopingcall.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/memorycache.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/middleware/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/middleware/request_id.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/periodic_task.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/policy.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/report/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/report/generators/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/report/generators/conf.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/report/generators/process.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/report/generators/threading.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/report/generators/version.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/report/guru_meditation_report.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/report/models/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/report/models/base.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/report/models/conf.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/report/models/process.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/report/models/threading.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/report/models/version.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/report/models/with_default_views.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/report/report.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/report/utils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/report/views/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/report/views/jinja_view.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/report/views/json/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/report/views/json/generic.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/report/views/text/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/report/views/text/generic.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/report/views/text/header.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/report/views/text/process.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/report/views/text/threading.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/report/views/xml/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/report/views/xml/generic.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/service.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/sslutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/systemd.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/threadgroup.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/versionutils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/opts.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/paths.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/pci/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/pci/device.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/pci/devspec.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/pci/manager.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/pci/request.py
@@ -782,6 +803,8 @@
file path=usr/lib/python$(PYVER)/vendor-packages/nova/scheduler/scheduler_options.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/scheduler/utils.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/scheduler/weights/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/scheduler/weights/affinity.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/scheduler/weights/disk.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/scheduler/weights/io_ops.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/scheduler/weights/metrics.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/scheduler/weights/ram.py
@@ -792,10 +815,8 @@
file path=usr/lib/python$(PYVER)/vendor-packages/nova/servicegroup/drivers/base.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/servicegroup/drivers/db.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/servicegroup/drivers/mc.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/servicegroup/drivers/zk.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/signature_utils.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/spice/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/storage/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/storage/linuxscsi.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/test.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/utils.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/version.py
@@ -807,6 +828,7 @@
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/disk/api.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/disk/mount/__init__.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/disk/mount/api.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/disk/mount/block.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/disk/mount/loop.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/disk/mount/nbd.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/disk/vfs/__init__.py
@@ -818,6 +840,23 @@
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/fake.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/firewall.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/hardware.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/hyperv/README.rst
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/hyperv/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/hyperv/constants.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/hyperv/driver.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/hyperv/eventhandler.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/hyperv/hostops.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/hyperv/imagecache.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/hyperv/livemigrationops.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/hyperv/migrationops.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/hyperv/pathutils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/hyperv/rdpconsoleops.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/hyperv/snapshotops.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/hyperv/vif.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/hyperv/vmops.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/hyperv/volumeops.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/image/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/image/model.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/imagecache.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/images.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/interfaces.template
@@ -831,31 +870,87 @@
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/compat.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/config.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/designer.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/dmcrypt.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/driver.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/firewall.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/guest.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/host.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/imagebackend.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/imagecache.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/instancejobtracker.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/lvm.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/quobyte.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/rbd_utils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/remotefs.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/storage/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/storage/dmcrypt.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/storage/lvm.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/storage/rbd_utils.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/utils.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/vif.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/volume.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/volume/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/volume/aoe.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/volume/disco.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/volume/fibrechannel.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/volume/fs.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/volume/glusterfs.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/volume/gpfs.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/volume/hgst.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/volume/iscsi.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/volume/iser.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/volume/net.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/volume/nfs.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/volume/quobyte.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/volume/remotefs.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/volume/scaleio.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/volume/scality.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/volume/smbfs.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/volume/volume.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/netutils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/opts.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/osinfo.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/solariszones/__init__.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/solariszones/driver.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/solariszones/sysconfig.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/storage_users.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/virtapi.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/vmwareapi/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/vmwareapi/constants.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/vmwareapi/driver.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/vmwareapi/ds_util.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/vmwareapi/error_util.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/vmwareapi/host.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/vmwareapi/imagecache.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/vmwareapi/images.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/vmwareapi/io_util.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/vmwareapi/network_util.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/vmwareapi/read_write_util.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/vmwareapi/vif.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/vmwareapi/vim_util.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/vmwareapi/vm_util.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/vmwareapi/vmops.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/vmwareapi/volumeops.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/volumeutils.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/watchdog_actions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/xenapi/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/xenapi/agent.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/xenapi/client/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/xenapi/client/objects.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/xenapi/client/session.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/xenapi/driver.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/xenapi/fake.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/xenapi/firewall.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/xenapi/host.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/xenapi/image/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/xenapi/image/bittorrent.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/xenapi/image/glance.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/xenapi/image/utils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/xenapi/image/vdi_through_dev.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/xenapi/network_utils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/xenapi/pool.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/xenapi/pool_states.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/xenapi/vif.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/xenapi/vm_utils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/xenapi/vmops.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/xenapi/volume_utils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/xenapi/volumeops.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/vnc/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/vnc/xvp_proxy.py \
- pkg.depend.bypass-generate=.*/oslo_log.*
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/vnc/xvp_proxy.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/volume/__init__.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/volume/cinder.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/volume/encryptors/__init__.py
@@ -865,6 +960,8 @@
file path=usr/lib/python$(PYVER)/vendor-packages/nova/volume/encryptors/nop.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/weights.py
file path=usr/lib/python$(PYVER)/vendor-packages/nova/wsgi.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/wsgi/nova-api.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/wsgi/nova-metadata.py
dir path=var/lib/nova owner=nova group=nova mode=0700
file files/Xresources path=var/lib/nova/.Xresources owner=nova group=nova
#
@@ -896,10 +993,6 @@
# to flush this out.
depend type=group fmri=library/python/python-ldap-$(PYV)
-# force a group dependency on the optional python-memcached; pkgdepend work is
-# needed to flush this out.
-depend type=group fmri=library/python/python-memcached-$(PYV)
-
# force a group dependency on package delivering the optional solaris(5) brand
depend type=group fmri=system/zones/brand/brand-solaris
@@ -907,8 +1000,9 @@
# brand
depend type=group fmri=system/zones/brand/brand-solaris-kz
-# To upgrade to Kilo version, Juno version of the package must be on the system
-depend type=origin fmri=cloud/openstack/[email protected] root-image=true
+# To upgrade to the Mitaka version, the Kilo version of the package
+# must be on the system
+depend type=origin fmri=cloud/openstack/[email protected] root-image=true
# force a dependency on package delivering chown(1)
depend type=require fmri=__TBD pkg.debug.depend.file=usr/bin/chown
@@ -943,10 +1037,17 @@
# force a dependency on boto; pkgdepend work is needed to flush this out.
depend type=require fmri=library/python/boto-$(PYV)
+# force a dependency on castellan; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/castellan-$(PYV)
+
# force a dependency on cinderclient; pkgdepend work is needed to flush this
# out.
depend type=require fmri=library/python/cinderclient-$(PYV)
+# force a dependency on cryptography; pkgdepend work is needed to flush this
+# out.
+depend type=require fmri=library/python/cryptography-$(PYV)
+
# force a dependency on decorator; pkgdepend work is needed to flush this out.
depend type=require fmri=library/python/decorator-$(PYV)
@@ -966,6 +1067,10 @@
# 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 keystoneauth1; pkgdepend work is needed to flush this
+# out.
+depend type=require fmri=library/python/keystoneauth1-$(PYV)
+
# force a dependency on keystoneclient; pkgdepend work is needed to flush this
# out.
depend type=require fmri=library/python/keystoneclient-$(PYV)
@@ -986,6 +1091,12 @@
# out.
depend type=require fmri=library/python/neutronclient-$(PYV)
+# force a dependency on os-brick; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/os-brick-$(PYV)
+
+# force a dependency on oslo.cache; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/oslo.cache-$(PYV)
+
# force a dependency on oslo.concurrency; pkgdepend work is needed to flush this
# out.
depend type=require fmri=library/python/oslo.concurrency-$(PYV)
@@ -1000,20 +1111,31 @@
# 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)
+
+# force a dependency on oslo.reports; pkgdepend work is needed to flush this
+# out.
+depend type=require fmri=library/python/oslo.reports-$(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)
+
# force a dependency on passlib; pkgdepend work is needed to flush this out.
depend type=require fmri=library/python/passlib-$(PYV)
@@ -1030,27 +1152,15 @@
# force a dependency on prettytable; pkgdepend work is needed to flush this out.
depend type=require fmri=library/python/prettytable-$(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 pyasn1; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/pyasn1-$(PYV)
-
# force a dependency on requests; pkgdepend work is needed to flush this out.
depend type=require fmri=library/python/requests-$(PYV)
-# force a dependency on retrying; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/retrying-$(PYV)
-
# force a dependency on rfc3986; pkgdepend work is needed to flush this out.
depend type=require fmri=library/python/rfc3986-$(PYV)
# force a dependency on routes; pkgdepend work is needed to flush this out.
depend type=require fmri=library/python/routes-$(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)
--- a/components/openstack/nova/patches/01-Solaris-vm_mode.patch Wed Sep 07 14:48:42 2016 -0700
+++ b/components/openstack/nova/patches/01-Solaris-vm_mode.patch Wed Sep 07 14:48:42 2016 -0700
@@ -1,5 +1,5 @@
-In-house patch to enable Solaris Zones and LDM specific vm_mode value for use by
-the ImagePropertiesFilter scheduling filter. This patch has not yet been
+In-house patch to enable Solaris Zones and LDM specific vm_mode value for use
+by the ImagePropertiesFilter scheduling filter. This patch has not yet been
submitted upstream.
--- nova-2015.1.2/nova/compute/vm_mode.py.~1~ 2015-10-13 07:52:35.000000000 -0700
--- a/components/openstack/nova/patches/02-requirements.patch Wed Sep 07 14:48:42 2016 -0700
+++ b/components/openstack/nova/patches/02-requirements.patch Wed Sep 07 14:48:42 2016 -0700
@@ -7,53 +7,22 @@
paramiko Not applicable
-python-cinderclient Upgrade to version 1.3.1
-
---- nova-2015.1.2/nova.egg-info/requires.txt.orig 2015-10-13 08:00:30.000000000 -0700
-+++ nova-2015.1.2/nova.egg-info/requires.txt 2015-12-31 19:53:42.083286139 -0800
-@@ -13,12 +13,10 @@ PasteDeploy>=1.5.0
- Paste
- sqlalchemy-migrate!=0.9.8,<0.10.0,>=0.9.5
- netaddr>=0.7.12
--paramiko>=1.13.0
- pyasn1
--Babel>=1.3
- iso8601>=0.1.9
- jsonschema<3.0.0,>=2.0.0
--python-cinderclient<1.2.0,>=1.1.0
-+python-cinderclient<=1.3.1,>=1.1.0
- python-neutronclient<2.5.0,>=2.4.0
- python-glanceclient<0.18.0,>=0.15.0
- six>=1.9.0
-@@ -31,7 +29,6 @@ oslo.log<1.1.0,>=1.0.0 # Apache-2.0
- oslo.serialization<1.5.0,>=1.4.0 # Apache-2.0
- oslo.utils!=1.4.1,<1.5.0,>=1.4.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.messaging<1.9.0,>=1.8.0 # Apache-2.0
- oslo.i18n<1.6.0,>=1.5.0 # Apache-2.0
- rfc3986>=0.2.0 # Apache-2.0
---- nova-2015.1.2/requirements.txt.orig 2015-10-13 07:52:44.000000000 -0700
-+++ nova-2015.1.2/requirements.txt 2015-12-31 19:54:01.422821937 -0800
-@@ -17,12 +17,10 @@ PasteDeploy>=1.5.0
- Paste
- sqlalchemy-migrate!=0.9.8,<0.10.0,>=0.9.5
- netaddr>=0.7.12
--paramiko>=1.13.0
- pyasn1
--Babel>=1.3
- iso8601>=0.1.9
- jsonschema<3.0.0,>=2.0.0
--python-cinderclient<1.2.0,>=1.1.0
-+python-cinderclient<=1.3.1,>=1.1.0
- python-neutronclient<2.5.0,>=2.4.0
- python-glanceclient<0.18.0,>=0.15.0
- six>=1.9.0
-@@ -35,7 +33,6 @@ oslo.log<1.1.0,>=1.0.0 # Apache-2.0
- oslo.serialization<1.5.0,>=1.4.0 # Apache-2.0
- oslo.utils!=1.4.1,<1.5.0,>=1.4.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.messaging<1.9.0,>=1.8.0 # Apache-2.0
- oslo.i18n<1.6.0,>=1.5.0 # Apache-2.0
- rfc3986>=0.2.0 # Apache-2.0
+--- nova-13.1.0/requirements.txt.~1~ 2016-06-14 07:45:49.000000000 -0800
++++ nova-13.1.0/requirements.txt 2016-06-27 18:39:45.611946372 -0800
+@@ -22,8 +22,6 @@ PrettyTable<0.8,>=0.7 # BSD
+ sqlalchemy-migrate>=0.9.6 # Apache-2.0
+ netaddr!=0.7.16,>=0.7.12 # BSD
+ netifaces>=0.10.4 # MIT
+-paramiko>=1.16.0 # LGPL
+-Babel!=2.3.0,!=2.3.1,!=2.3.2,!=2.3.3,>=1.3 # BSD
+ iso8601>=0.1.9 # MIT
+ jsonschema!=2.5.0,<3.0.0,>=2.0.0 # MIT
+ python-cinderclient>=1.3.1 # Apache-2.0
+@@ -44,7 +42,6 @@ oslo.reports>=0.6.0 # Apache-2.0
+ oslo.serialization>=1.10.0 # Apache-2.0
+ oslo.utils>=3.5.0 # Apache-2.0
+ oslo.db>=4.1.0 # Apache-2.0
+-oslo.rootwrap>=2.0.0 # Apache-2.0
+ oslo.messaging>=4.0.0 # Apache-2.0
+ oslo.policy>=0.5.0 # Apache-2.0
+ oslo.i18n>=2.1.0 # Apache-2.0
--- a/components/openstack/nova/patches/03-Solaris-flavors.patch Wed Sep 07 14:48:42 2016 -0700
+++ b/components/openstack/nova/patches/03-Solaris-flavors.patch Wed Sep 07 14:48:42 2016 -0700
@@ -1,8 +1,8 @@
In-house patch to update the default flavors for use with Solaris.
This patch has not yet been submitted upstream.
---- nova-2015.1.2/nova/db/sqlalchemy/migrate_repo/versions/216_havana.py.~1~ 2015-10-13 07:52:44.000000000 -0700
-+++ nova-2015.1.2/nova/db/sqlalchemy/migrate_repo/versions/216_havana.py 2015-12-31 20:20:25.580944374 -0800
+--- nova-7e41c2cbb243b444bf275c46ea21169bbc08b2da/nova/db/sqlalchemy/migrate_repo/versions/216_havana.py.~1~ 2016-01-05 16:04:30.000000000 -0800
++++ nova-7e41c2cbb243b444bf275c46ea21169bbc08b2da/nova/db/sqlalchemy/migrate_repo/versions/216_havana.py 2016-01-27 03:24:35.303852343 -0800
@@ -85,17 +85,45 @@ def _create_shadow_tables(migrate_engine
raise
@@ -52,7 +52,7 @@
i = instance_types_table.insert()
+ e = instance_type_extra_specs.insert()
+ index = 1
- for name, values in default_inst_types.iteritems():
+ for name, values in default_inst_types.items():
i.execute({'name': name, 'memory_mb': values["mem"],
'vcpus': values["vcpus"], 'deleted': 0,
@@ -106,6 +134,10 @@ def _populate_instance_types(instance_ty
@@ -66,7 +66,7 @@
except Exception:
LOG.info(repr(instance_types_table))
LOG.exception(_LE('Exception while seeding instance_types table'))
-@@ -1548,7 +1580,7 @@ def upgrade(migrate_engine):
+@@ -1575,6 +1607,6 @@ def upgrade(migrate_engine):
_create_shadow_tables(migrate_engine)
# populate initial instance types
@@ -74,4 +74,3 @@
+ _populate_instance_types(instance_types, instance_type_extra_specs)
_create_dump_tables(migrate_engine)
-
--- a/components/openstack/nova/patches/04-compute-hvtype.patch Wed Sep 07 14:48:42 2016 -0700
+++ b/components/openstack/nova/patches/04-compute-hvtype.patch Wed Sep 07 14:48:42 2016 -0700
@@ -1,10 +1,11 @@
-In-house patch to add the 'solariszones' and 'ldoms' hypervisor to Nova's list of
-known hypervisors. This patch has not yet been submitted upstream.
+In-house patch to add the 'solariszones' and 'ldoms' hypervisors to
+Nova's list of known hypervisors. This patch has not yet been submitted
+upstream.
---- nova-2015.1.2/nova/compute/hv_type.py.~1~ 2015-10-13 07:52:44.000000000 -0700
-+++ nova-2015.1.2/nova/compute/hv_type.py 2016-08-02 13:55:19.746264695 -0700
-@@ -40,6 +40,8 @@
- PARALLELS = "parallels"
+--- nova-13.1.0/nova/compute/hv_type.py.~1~ 2016-06-14 08:45:36.000000000 -0700
++++ nova-13.1.0/nova/compute/hv_type.py 2016-08-05 11:46:42.648351250 -0700
+@@ -42,6 +42,8 @@ PARALLELS = "parallels"
+ VIRTUOZZO = "vz"
PHYP = "phyp"
QEMU = "qemu"
+SOLARISZONES = "solariszones"
@@ -12,7 +13,7 @@
TEST = "test"
UML = "uml"
VBOX = "vbox"
-@@ -61,6 +63,8 @@
+@@ -64,6 +66,8 @@ ALL = (
PARALLELS,
PHYP,
QEMU,
--- a/components/openstack/nova/patches/05-force-driver-snapshot.patch Wed Sep 07 14:48:42 2016 -0700
+++ b/components/openstack/nova/patches/05-force-driver-snapshot.patch Wed Sep 07 14:48:42 2016 -0700
@@ -2,11 +2,11 @@
method. This is required until we can support Image <--> Volume
transforms.
---- nova-2015.1.2/nova/api/openstack/compute/servers.py.orig 2015-11-10 14:29:33.597682730 -0700
-+++ nova-2015.1.2/nova/api/openstack/compute/servers.py 2015-11-10 14:30:21.231062292 -0700
-@@ -1072,8 +1072,10 @@ class Controller(wsgi.Controller):
+--- nova-13.1.0/nova/api/openstack/compute/servers.py.~1~ 2016-06-14 08:45:49.000000000 -0700
++++ nova-13.1.0/nova/api/openstack/compute/servers.py 2016-07-06 17:53:50.593003090 -0700
+@@ -1097,8 +1097,10 @@ class ServersController(wsgi.Controller)
context, instance.uuid)
-
+
try:
- if self.compute_api.is_volume_backed_instance(context, instance,
- bdms):
@@ -14,6 +14,6 @@
+ if hypervisor != 'solariszones' and \
+ self.compute_api.is_volume_backed_instance(context,
+ instance, bdms):
- img = instance.image_ref
- if not img:
- properties = bdms.root_metadata(
+ authorize(context, action="create_image:allow_volume_backed")
+ image = self.compute_api.snapshot_volume_backed(
+ context,
--- a/components/openstack/nova/patches/06-Solaris-dev-name.patch Wed Sep 07 14:48:42 2016 -0700
+++ b/components/openstack/nova/patches/06-Solaris-dev-name.patch Wed Sep 07 14:48:42 2016 -0700
@@ -1,13 +1,14 @@
The patch is to fix the issue of linuxy devices names on Solaris
instance recorded in the bugs (19987962 and 19277019).
---- nova-2015.1.0/nova/compute/utils.py.~1~ 2015-05-05 10:50:25.237281011 -0600
-+++ nova-2015.1.0/nova/compute/utils.py 2015-05-05 11:02:47.913482292 -0600
-@@ -133,6 +133,23 @@ def get_next_device_name(instance, devic
- /dev/vdc is specified but the backend uses /dev/xvdc), the device
+--- nova-13.0.0.0rc2/nova/compute/utils.py.~6~ 2016-03-31 01:46:45.489880535 -0800
++++ nova-13.0.0.0rc2/nova/compute/utils.py 2016-03-31 02:19:05.040013477 -0800
+@@ -137,6 +137,24 @@ def get_next_device_name(instance, devic
name will be converted to the appropriate format.
"""
-+ if driver.compute_driver_matches('solariszones.SolarisZonesDriver'):
+
++ if (CONF.compute_driver and
++ CONF.compute_driver.endswith('solariszones.SolarisZonesDriver')):
+ prefix = 'c1d'
+ if device_name_list == []:
+ # Return the root device (c1d0)
@@ -24,6 +25,6 @@
+ diff = [i for i in range(len(used_nums) + 1) if i not in used_nums]
+ return prefix + str(min(diff))
+
- is_xen = driver.compute_driver_matches('xenapi.XenAPIDriver')
-
req_prefix = None
+ req_letter = None
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/nova/patches/07-opts.patch Wed Sep 07 14:48:42 2016 -0700
@@ -0,0 +1,63 @@
+In-house patch to adjust nova/virt/opts.py to omit the Hyper-V
+hypervisor driver as it has unresolved dependencies and to add the
+Solaris Zones hypervisor driver, as well as some missing common
+components.
+
+--- nova-13.1.0/etc/nova/nova-config-generator.conf.~1~ 2016-06-14 08:45:49.000000000 -0700
++++ nova-13.1.0/etc/nova/nova-config-generator.conf 2016-07-25 23:42:03.124618180 -0700
+@@ -21,3 +21,10 @@ namespace = oslo.db
+ namespace = oslo.middleware
+ namespace = oslo.concurrency
+ namespace = keystonemiddleware.auth_token
++namespace = castellan.config
++namespace = oslo.db.concurrency
++namespace = oslo.middleware.cors
++namespace = oslo.middleware.sizelimit
++namespace = oslo.middleware.ssl
++namespace = oslo.reports
++namespace = oslo.versionedobjects
+--- nova-13.1.0/nova/virt/opts.py.~1~ 2016-06-14 08:45:49.000000000 -0700
++++ nova-13.1.0/nova/virt/opts.py 2016-07-25 23:40:46.653786235 -0700
+@@ -15,11 +15,6 @@ import itertools
+ import nova.conf
+ import nova.virt.configdrive
+ import nova.virt.disk.vfs.guestfs
+-import nova.virt.hyperv.eventhandler
+-import nova.virt.hyperv.pathutils
+-import nova.virt.hyperv.vif
+-import nova.virt.hyperv.vmops
+-import nova.virt.hyperv.volumeops
+ import nova.virt.imagecache
+ import nova.virt.libvirt.driver
+ import nova.virt.libvirt.imagebackend
+@@ -38,6 +33,7 @@ import nova.virt.libvirt.volume.remotefs
+ import nova.virt.libvirt.volume.scality
+ import nova.virt.libvirt.volume.smbfs
+ import nova.virt.libvirt.volume.volume
++import nova.virt.solariszones.driver
+ import nova.virt.vmwareapi.driver
+ import nova.virt.vmwareapi.images
+ import nova.virt.vmwareapi.vif
+@@ -63,14 +59,6 @@ def list_opts():
+ nova.virt.imagecache.imagecache_opts,
+ )),
+ ('guestfs', nova.virt.disk.vfs.guestfs.guestfs_opts),
+- ('hyperv',
+- itertools.chain(
+- nova.virt.hyperv.pathutils.hyperv_opts,
+- nova.virt.hyperv.vif.hyperv_opts,
+- nova.virt.hyperv.vmops.hyperv_opts,
+- nova.virt.hyperv.volumeops.hyper_volumeops_opts,
+- nova.virt.hyperv.eventhandler.hyperv_opts
+- )),
+ ('libvirt',
+ itertools.chain(
+ nova.virt.libvirt.driver.libvirt_opts,
+@@ -91,6 +79,7 @@ def list_opts():
+ nova.virt.libvirt.volume.scality.volume_opts,
+ nova.virt.libvirt.volume.smbfs.volume_opts,
+ )),
++ ('solariszones', nova.virt.solariszones.driver.solariszones_opts),
+ ('vmware',
+ itertools.chain(
+ [nova.virt.vmwareapi.vim_util.vmware_opts],
--- a/components/openstack/nova/patches/08-confirm_migration_context.patch Wed Sep 07 14:48:42 2016 -0700
+++ b/components/openstack/nova/patches/08-confirm_migration_context.patch Wed Sep 07 14:48:42 2016 -0700
@@ -1,20 +1,43 @@
In-house patch to fix a long standing "TODO" for adding the context
-argument to the confirm_migration() function.
+argument to the confirm_migration() function. This patch has not yet
+been submitted upstream.
---- ./nova/virt/driver.py.~1~ 2015-04-30 05:26:32.000000000 -0600
-+++ ./nova/virt/driver.py 2015-09-28 11:18:42.678804501 -0600
-@@ -526,7 +526,7 @@ class ComputeDriver(object):
+--- nova-13.1.0/nova/compute/manager.py.~1~ 2016-06-14 08:45:49.000000000 -0700
++++ nova-13.1.0/nova/compute/manager.py 2016-07-06 17:53:50.630410510 -0700
+@@ -3535,7 +3535,7 @@ class ComputeManager(manager.Manager):
+
+ network_info = self.network_api.get_instance_nw_info(context,
+ instance)
+- self.driver.confirm_migration(migration, instance,
++ self.driver.confirm_migration(context, migration, instance,
+ network_info)
+
+ migration.status = 'confirmed'
+--- nova-13.1.0/nova/virt/driver.py.~1~ 2016-06-14 08:45:49.000000000 -0700
++++ nova-13.1.0/nova/virt/driver.py 2016-07-06 17:53:50.636123710 -0700
+@@ -590,7 +590,7 @@ class ComputeDriver(object):
"""
raise NotImplementedError()
- def confirm_migration(self, migration, instance, network_info):
+ def confirm_migration(self, context, migration, instance, network_info):
- """Confirms a resize, destroying the source VM.
+ """Confirms a resize/migration, destroying the source VM.
:param instance: nova.objects.instance.Instance
---- ./nova/virt/hyperv/driver.py.~1~ 2015-04-30 05:26:19.000000000 -0600
-+++ ./nova/virt/hyperv/driver.py 2015-09-28 11:18:42.679315474 -0600
-@@ -213,7 +213,7 @@ class HyperVDriver(driver.ComputeDriver)
+--- nova-13.1.0/nova/virt/fake.py.~1~ 2016-06-14 08:45:49.000000000 -0700
++++ nova-13.1.0/nova/virt/fake.py 2016-07-06 17:53:50.637944380 -0700
+@@ -493,7 +493,7 @@ class FakeDriver(driver.ComputeDriver):
+ block_device_info=None, power_on=True):
+ return
+
+- def confirm_migration(self, migration, instance, network_info):
++ def confirm_migration(self, context, migration, instance, network_info):
+ return
+
+ def pre_live_migration(self, context, instance, block_device_info,
+--- nova-13.1.0/nova/virt/hyperv/driver.py.~1~ 2016-06-14 08:45:49.000000000 -0700
++++ nova-13.1.0/nova/virt/hyperv/driver.py 2016-07-06 17:53:50.636784880 -0700
+@@ -294,7 +294,7 @@ class HyperVDriver(driver.ComputeDriver)
timeout,
retry_interval)
@@ -23,9 +46,9 @@
self._migrationops.confirm_migration(migration, instance, network_info)
def finish_revert_migration(self, context, instance, network_info,
---- ./nova/virt/hyperv/migrationops.py.~1~ 2015-04-30 05:26:19.000000000 -0600
-+++ ./nova/virt/hyperv/migrationops.py 2015-09-28 11:18:42.679774671 -0600
-@@ -133,7 +133,7 @@ class MigrationOps(object):
+--- nova-13.1.0/nova/virt/hyperv/migrationops.py.~1~ 2016-06-14 08:45:36.000000000 -0700
++++ nova-13.1.0/nova/virt/hyperv/migrationops.py 2016-07-06 17:53:50.637370840 -0700
+@@ -135,7 +135,7 @@ class MigrationOps(object):
# disk_info is not used
return ""
@@ -34,9 +57,20 @@
LOG.debug("confirm_migration called", instance=instance)
self._pathutils.get_instance_migr_revert_dir(instance.name,
---- ./nova/virt/vmwareapi/driver.py.~1~ 2015-04-30 05:26:32.000000000 -0600
-+++ ./nova/virt/vmwareapi/driver.py 2015-09-28 11:18:42.680389230 -0600
-@@ -280,7 +280,7 @@ class VMwareVCDriver(driver.ComputeDrive
+--- nova-13.1.0/nova/virt/libvirt/driver.py.~1~ 2016-06-14 08:45:49.000000000 -0700
++++ nova-13.1.0/nova/virt/libvirt/driver.py 2016-07-06 17:53:50.635162405 -0700
+@@ -7506,7 +7506,7 @@ class LibvirtDriver(driver.ComputeDriver
+ LOG.debug("finish_revert_migration finished successfully.",
+ instance=instance)
+
+- def confirm_migration(self, migration, instance, network_info):
++ def confirm_migration(self, context, migration, instance, network_info):
+ """Confirms a resize, destroying the source VM."""
+ self._cleanup_resize(instance, network_info)
+
+--- nova-13.1.0/nova/virt/vmwareapi/driver.py.~1~ 2016-06-14 08:45:49.000000000 -0700
++++ nova-13.1.0/nova/virt/vmwareapi/driver.py 2016-07-06 17:53:50.631418330 -0700
+@@ -287,7 +287,7 @@ class VMwareVCDriver(driver.ComputeDrive
return self._vmops.migrate_disk_and_power_off(context, instance,
dest, flavor)
@@ -45,9 +79,9 @@
"""Confirms a resize, destroying the source VM."""
self._vmops.confirm_migration(migration, instance, network_info)
---- ./nova/virt/vmwareapi/vmops.py.~1~ 2015-04-30 05:26:32.000000000 -0600
-+++ ./nova/virt/vmwareapi/vmops.py 2015-09-28 11:18:42.681486983 -0600
-@@ -1198,7 +1198,7 @@ class VMwareVMOps(object):
+--- nova-13.1.0/nova/virt/vmwareapi/vmops.py.~1~ 2016-06-14 08:45:49.000000000 -0700
++++ nova-13.1.0/nova/virt/vmwareapi/vmops.py 2016-07-06 17:53:50.632521145 -0700
+@@ -1369,7 +1369,7 @@ class VMwareVMOps(object):
step=4,
total_steps=RESIZE_TOTAL_STEPS)
@@ -56,9 +90,9 @@
"""Confirms a resize, destroying the source VM."""
vm_ref = vm_util.get_vm_ref(self._session, instance)
vmdk = vm_util.get_vmdk_info(self._session, vm_ref,
---- ./nova/virt/xenapi/driver.py.~1~ 2015-04-30 05:26:19.000000000 -0600
-+++ ./nova/virt/xenapi/driver.py 2015-09-28 11:18:42.682013351 -0600
-@@ -191,9 +191,8 @@ class XenAPIDriver(driver.ComputeDriver)
+--- nova-13.1.0/nova/virt/xenapi/driver.py.~1~ 2016-06-14 08:45:49.000000000 -0700
++++ nova-13.1.0/nova/virt/xenapi/driver.py 2016-07-06 17:53:50.639919940 -0700
+@@ -192,9 +192,8 @@ class XenAPIDriver(driver.ComputeDriver)
self._vmops.spawn(context, instance, image_meta, injected_files,
admin_password, network_info, block_device_info)
@@ -69,9 +103,9 @@
self._vmops.confirm_migration(migration, instance, network_info)
def finish_revert_migration(self, context, instance, network_info,
---- ./nova/virt/xenapi/vmops.py.~1~ 2015-04-30 05:26:19.000000000 -0600
-+++ ./nova/virt/xenapi/vmops.py 2015-09-28 11:18:42.682852646 -0600
-@@ -203,7 +203,7 @@ class VMOps(object):
+--- nova-13.1.0/nova/virt/xenapi/vmops.py.~1~ 2016-06-14 08:45:49.000000000 -0700
++++ nova-13.1.0/nova/virt/xenapi/vmops.py 2016-07-06 17:53:50.639195245 -0700
+@@ -205,7 +205,7 @@ class VMOps(object):
nova_uuids.append(nova_uuid)
return nova_uuids
@@ -80,36 +114,3 @@
self._destroy_orig_vm(instance, network_info)
def _destroy_orig_vm(self, instance, network_info):
---- ./nova/virt/fake.py.~1~ 2015-04-30 05:26:32.000000000 -0600
-+++ ./nova/virt/fake.py 2015-09-28 11:18:42.683360500 -0600
-@@ -488,7 +488,7 @@ class FakeDriver(driver.ComputeDriver):
- block_device_info=None, power_on=True):
- return
-
-- def confirm_migration(self, migration, instance, network_info):
-+ def confirm_migration(self, context, migration, instance, network_info):
- return
-
- def pre_live_migration(self, context, instance, block_device_info,
---- ./nova/virt/libvirt/driver.py.~1~ 2015-04-30 05:26:32.000000000 -0600
-+++ ./nova/virt/libvirt/driver.py 2015-09-28 11:18:42.685306371 -0600
-@@ -6517,7 +6517,7 @@ class LibvirtDriver(driver.ComputeDriver
- instance)
- timer.start(interval=0.5).wait()
-
-- def confirm_migration(self, migration, instance, network_info):
-+ def confirm_migration(self, context, migration, instance, network_info):
- """Confirms a resize, destroying the source VM."""
- self._cleanup_resize(instance, network_info)
-
---- ./nova/compute/manager.py.~1~ 2015-04-30 05:26:32.000000000 -0600
-+++ ./nova/compute/manager.py 2015-09-28 11:18:42.687005117 -0600
-@@ -3700,7 +3700,7 @@ class ComputeManager(manager.Manager):
- migration.source_compute, teardown=True)
-
- network_info = self._get_instance_nw_info(context, instance)
-- self.driver.confirm_migration(migration, instance,
-+ self.driver.confirm_migration(context, migration, instance,
- network_info)
-
- migration.status = 'confirmed'
--- a/components/openstack/nova/patches/09-generate_sample.patch Wed Sep 07 14:48:42 2016 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-In-house patch to update the generate_sample script and related data
-files for use with Solaris.
-
---- nova-2015.1.2/nova/openstack/common/config/generator.py.~1~ 2015-10-13 07:52:44.000000000 -0700
-+++ nova-2015.1.2/nova/openstack/common/config/generator.py 2016-01-31 21:59:34.000000000 -0800
-@@ -104,7 +104,7 @@ def generate(argv):
- # and the list of Opt instances for that group.
- if parsed_args.libraries:
- loader = stevedore.named.NamedExtensionManager(
-- 'oslo_config.opts',
-+ 'oslo.config.opts',
- names=list(set(parsed_args.libraries)),
- invoke_on_load=False,
- on_load_failure_callback=raise_extension_exception
---- nova-2015.1.2/tools/config/generate_sample.sh.~1~ 2015-10-13 07:52:44.000000000 -0700
-+++ nova-2015.1.2/tools/config/generate_sample.sh 2016-01-31 21:59:34.000000000 -0800
-@@ -1,5 +1,7 @@
- #!/usr/bin/env bash
-
-+PATH=/usr/gnu/bin:/usr/bin
-+
- print_hint() {
- echo "Try \`${0##*/} --help' for more information." >&2
- }
---- nova-2015.1.2/tools/config/oslo.config.generator.rc.~1~ 2015-10-13 07:52:44.000000000 -0700
-+++ nova-2015.1.2/tools/config/oslo.config.generator.rc 2016-01-31 22:09:12.591859883 -0800
-@@ -1,2 +1,9 @@
--NOVA_CONFIG_GENERATOR_EXTRA_LIBRARIES="oslo.messaging oslo_db oslo.concurrency"
--NOVA_CONFIG_GENERATOR_EXTRA_MODULES=keystonemiddleware.auth_token
-+NOVA_CONFIG_GENERATOR_EXTRA_LIBRARIES=" \
-+ keystonemiddleware.auth_token \
-+ oslo.concurrency \
-+ oslo.db \
-+ oslo.db.concurrency \
-+ oslo.log \
-+ oslo.messaging \
-+ oslo.middleware \
-+"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/nova/patches/09-remove-pycrypto.patch Wed Sep 07 14:48:42 2016 -0700
@@ -0,0 +1,113 @@
+This patch is for the removal of PyCrypto dependency in Nova. It
+consists of the result of two upstream changesets, one of which added
+support for Paramiko 2.0 and the other which removed support for
+earlier Paramiko versions and with that, the PyCrypto dependency.
+
+This patch can be removed in post-Mitaka releases.
+
+commit 6b1293fd6f5bcb35f317f36c540f543b1192928c
+Author: Sean Dague <[email protected]>
+Date: Tue May 10 11:39:11 2016 -0400
+
+ Drop paramiko < 2 compat code
+
+ This drops the paramiko < 2 compatibility code so we only need to
+ support one major version.
+
+ Depends-On: I2369638282b4fefccd8484a5039fcfa9795069a7
+ (global requirements change)
+
+ Change-Id: Ife4df9e64299e1182d77d568d1deed5ec3b608b3
+ Closes-Bug: #1483132
+
+commit c05b338f163e0bafbe564c6c7c593b819f2f2eac
+Author: Corey Wright <[email protected]>
+Date: Tue May 3 23:13:24 2016 -0500
+
+ crypto: Add support for Paramiko 2.x
+
+ Only use PyCrypto/PyCryptodome work-around with Paramiko 1.x and use
+ straight-forward Paramiko interface with 2.x.
+
+ TODO: Revert this and PyCrypto/PyCryptodome work-around when Paramiko
+ is upgraded to 2.x (ie replace `generate_keys(bits)` call with
+ `paramiko.RSAKey.generate(bits)`).
+
+ Change If88beeb3983705621fe736995939ac20b2daf1f3 added a work-around
+ for the partially-PyCrypto-compatible PyCryptodome causing Paramiko,
+ which has a dependency on PyCrypto, to break. This work-around
+ entails implementing Paramiko internals (ie how to generate a key) in
+ Nova in a way compatible with both PyCrypto and PyCryptodom.
+
+ This work-around is itself a source of failure with Paramiko 2 which
+ has replaced the PyCrypto requirement with the cryptography Python
+ package. As Paramiko no longer depends on PyCrypto, Nova doesn't have
+ an explicit PyCrypto requirement, and there's no implicit dependency
+ on PyCrypto, when Nova tries to import PyCrypto it fails. Even if
+ PyCrypto was installed, the work-around would still fail because the
+ Paramiko interface that Nova is using as part of the work-around
+ changed with the major version change (ie 1.x => 2.x).
+
+ Change-Id: I5d6543e690a3b4495476027fd8a4894ff8c42bf6
+ Related-Bug: #1483132
+
+--- nova-13.1.0/nova/crypto.py.~1~ 2016-06-14 08:45:49.000000000 -0700
++++ nova-13.1.0/nova/crypto.py 2016-07-06 18:28:56.554038265 -0700
+@@ -26,7 +26,6 @@ import base64
+ import binascii
+ import os
+
+-from Crypto.PublicKey import RSA
+ from cryptography import exceptions
+ from cryptography.hazmat import backends
+ from cryptography.hazmat.primitives.asymmetric import padding
+@@ -162,27 +161,8 @@ def generate_x509_fingerprint(pem_key):
+ 'Error message: %s') % ex)
+
+
+-def generate_key(bits):
+- """Generate a paramiko RSAKey"""
+- # NOTE(dims): pycryptodome has changed the signature of the RSA.generate
+- # call. specifically progress_func has been dropped. paramiko still uses
+- # pycrypto. However some projects like latest pysaml2 have switched from
+- # pycrypto to pycryptodome as pycrypto seems to have been abandoned.
+- # paramiko project has started transition to pycryptodome as well but
+- # there is no release yet with that support. So at the moment depending on
+- # which version of pysaml2 is installed, Nova is likely to break. So we
+- # call "RSA.generate(bits)" which works on both pycrypto and pycryptodome
+- # and then wrap it into a paramiko.RSAKey
+- rsa = RSA.generate(bits)
+- key = paramiko.RSAKey(vals=(rsa.e, rsa.n))
+- key.d = rsa.d
+- key.p = rsa.p
+- key.q = rsa.q
+- return key
+-
+-
+ def generate_key_pair(bits=2048):
+- key = generate_key(bits)
++ key = paramiko.RSAKey.generate(bits)
+ keyout = six.StringIO()
+ key.write_private_key(keyout)
+ private_key = keyout.getvalue()
+--- nova-13.1.0/nova/tests/unit/test_crypto.py.~1~ 2016-06-14 08:45:49.000000000 -0700
++++ nova-13.1.0/nova/tests/unit/test_crypto.py 2016-07-06 18:28:56.554545025 -0700
+@@ -362,7 +362,7 @@ class KeyPairTest(test.NoDBTestCase):
+ keyin.seek(0)
+ key = paramiko.RSAKey.from_private_key(keyin)
+
+- with mock.patch.object(crypto, 'generate_key') as mock_generate:
++ with mock.patch.object(paramiko.RSAKey, 'generate') as mock_generate:
+ mock_generate.return_value = key
+ (private_key, public_key, fingerprint) = crypto.generate_key_pair()
+ self.assertEqual(self.rsa_pub, public_key)
+--- nova-13.1.0/requirements.txt.~2~ 2016-07-06 18:28:56.409131200 -0700
++++ nova-13.1.0/requirements.txt 2016-07-06 18:28:56.555735710 -0700
+@@ -13,7 +13,6 @@ lxml>=2.3 # BSD
+ Routes!=2.0,!=2.1,!=2.3.0,>=1.12.3;python_version=='2.7' # MIT
+ Routes!=2.0,!=2.3.0,>=1.12.3;python_version!='2.7' # MIT
+ cryptography!=1.3.0,>=1.0 # BSD/Apache-2.0
+-pycrypto>=2.6 # Public Domain
+ WebOb>=1.2.3 # MIT
+ greenlet>=0.3.2 # MIT
+ PasteDeploy>=1.5.0 # MIT
--- a/components/openstack/nova/patches/10-launchpad-1486590.patch Wed Sep 07 14:48:42 2016 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-This patch has been integrated into Nova 11.0.0 in Liberty but has not
-yet been back-ported to Kilo.
-
-From 9095b364bd8fb1e4f282d7aca44825eca1243b53 Mon Sep 17 00:00:00 2001
-From: Davanum Srinivas <[email protected]>
-Date: Tue, 18 Aug 2015 22:26:36 -0400
-Subject: Expose keystoneclient's session and auth plugin loading parameters
-
-In change id (I7b3b825737dde333c8d88019d814304cbefdbfc7) support
-was added to be able to specify and use the standard session and
-auth plugin helpers from keystoneclient to standardize the
-options available for talking to neutron.
-
-However, these config options do not show up when we generate
-the sample configuration file. Jamie Lennox has details in his
-blog as well:
-http://www.jamielennox.net/blog/2015/02/17/loading-authentication-plugins/
-
-Since there are many auth plugins, we generate config params for
-a few common ones.
-
-DocImpact
-
-Closes-Bug: #1486590
-Change-Id: Id6b3ff845c2388fa01b1d3b28093f5bdf27136ff
----
-
---- nova-2015.1.2/nova/network/neutronv2/api.py.orig 2015-10-13 07:52:44.000000000 -0700
-+++ nova-2015.1.2/nova/network/neutronv2/api.py 2016-01-05 22:35:48.184784998 -0800
-@@ -15,6 +15,7 @@
- # under the License.
- #
-
-+import copy
- import time
- import uuid
-
-@@ -123,8 +124,8 @@ deprecations = {'cafile': [cfg.Deprecate
- 'timeout': [cfg.DeprecatedOpt('url_timeout',
- group=NEUTRON_GROUP)]}
-
--session.Session.register_conf_options(CONF, NEUTRON_GROUP,
-- deprecated_opts=deprecations)
-+_neutron_options = session.Session.register_conf_options(
-+ CONF, NEUTRON_GROUP, deprecated_opts=deprecations)
- auth.register_conf_options(CONF, NEUTRON_GROUP)
-
-
-@@ -139,6 +140,25 @@ _SESSION = None
- _ADMIN_AUTH = None
-
-
-+def list_opts():
-+ list = copy.deepcopy(_neutron_options)
-+ list.insert(0, auth.get_common_conf_options()[0])
-+ # NOTE(dims): There are a lot of auth plugins, we just generate
-+ # the config options for a few common ones
-+ plugins = ['password', 'v2password', 'v3password']
-+ for name in plugins:
-+ for plugin_option in auth.get_plugin_class(name).get_options():
-+ found = False
-+ for option in list:
-+ if option.name == plugin_option.name:
-+ found = True
-+ break
-+ if not found:
-+ list.append(plugin_option)
-+ list.sort(key=lambda x: x.name)
-+ return [(NEUTRON_GROUP, list)]
-+
-+
- def reset_state():
- global _ADMIN_AUTH
- global _SESSION
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/nova/patches/10-no-security-groups.patch Wed Sep 07 14:48:42 2016 -0700
@@ -0,0 +1,15 @@
+In-house patch as Solaris doesn't currently support security groups.
+
+--- nova-13.1.0/nova/network/neutronv2/api.py.~1~ 2016-06-14 08:45:49.000000000 -0700
++++ nova-13.1.0/nova/network/neutronv2/api.py 2016-07-06 18:08:27.484252690 -0700
+@@ -606,8 +606,8 @@ class API(base_api.NetworkAPI):
+ self._check_external_network_attach(context, nets)
+
+ security_groups = kwargs.get('security_groups', [])
+- security_group_ids = self._process_security_groups(
+- instance, neutron, security_groups)
++ # TODO(gmoodalb): Solaris doesn't currently support security groups.
++ security_group_ids = []
+
+ preexisting_port_ids = []
+ created_port_ids = []
--- a/components/openstack/nova/patches/11-launchpad-1435633.patch Wed Sep 07 14:48:42 2016 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-This upstream patch has been addressed in Liberty but has not yet been
-addressed in Kilo.
-
-commit c0d0e5ccf62f45498f084ed59e776c3b370e9137
-Author: jichenjc <[email protected]>
-Date: Mon Mar 23 00:36:43 2015 +0800
-
- Handle MessageTimeout to MigrationPreCheckError
-
- There are a few checks before live-migration, if any of the
- check failed, the live-migration can't be done. However
- during _call_livem_checks_on_host check, because it's a
- RPC call ,so it might result in a MessageTimeout exception.
- If this occurs, we should safely revert its state,
- since no real opperation occured.
-
- This patch translates the MessageTimeout to
- MigrationPreCheckError and leverage existing MigrationPreCheckError
- processing to revert instance to normal state instead of error
-
- Closes-Bug: 1435633
-
- Change-Id: I8b484abb6650e14e2d225ca5e476d1fa7a6ee990
-
---- nova-2015.1.2/nova/conductor/tasks/live_migrate.py.~1~ 2015-10-13 07:52:44.000000000 -0700
-+++ nova-2015.1.2/nova/conductor/tasks/live_migrate.py 2016-02-10 23:52:06.321170852 -0800
-@@ -12,6 +12,7 @@
-
- from oslo_config import cfg
- from oslo_log import log as logging
-+import oslo_messaging as messaging
-
- from nova.compute import power_state
- from nova.compute import rpcapi as compute_rpcapi
-@@ -140,9 +141,14 @@ class LiveMigrationTask(object):
- raise exception.DestinationHypervisorTooOld()
-
- def _call_livem_checks_on_host(self, destination):
-- self.migrate_data = self.compute_rpcapi.\
-- check_can_live_migrate_destination(self.context, self.instance,
-- destination, self.block_migration, self.disk_over_commit)
-+ try:
-+ self.migrate_data = self.compute_rpcapi.\
-+ check_can_live_migrate_destination(self.context, self.instance,
-+ destination, self.block_migration, self.disk_over_commit)
-+ except messaging.MessagingTimeout:
-+ msg = _("Timeout while checking if we can live migrate to host: "
-+ "%s") % destination
-+ raise exception.MigrationPreCheckError(msg)
-
- def _find_destination(self):
- # TODO(johngarbutt) this retry loop should be shared
---- nova-2015.1.2/nova/tests/unit/conductor/tasks/test_live_migrate.py.~1~ 2015-10-13 07:52:44.000000000 -0700
-+++ nova-2015.1.2/nova/tests/unit/conductor/tasks/test_live_migrate.py 2016-02-10 23:52:46.817923384 -0800
-@@ -11,6 +11,7 @@
- # under the License.
-
- from mox3 import mox
-+import oslo_messaging as messaging
-
- from nova.compute import power_state
- from nova.compute import utils as compute_utils
-@@ -401,5 +402,12 @@ class LiveMigrationTaskTestCase(test.NoD
- self.mox.ReplayAll()
- self.assertRaises(exception.NoValidHost, self.task._find_destination)
-
-+ def test_call_livem_checks_on_host(self):
-+ with mock.patch.object(self.task.compute_rpcapi,
-+ 'check_can_live_migrate_destination',
-+ side_effect=messaging.MessagingTimeout):
-+ self.assertRaises(exception.MigrationPreCheckError,
-+ self.task._call_livem_checks_on_host, {})
-+
- def test_not_implemented_rollback(self):
- self.assertRaises(NotImplementedError, self.task.rollback)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/nova/patches/11-migrate-data.patch Wed Sep 07 14:48:42 2016 -0700
@@ -0,0 +1,33 @@
+This in-house patch adds a subclass to LiveMigrateData to support
+Solaris kernel zone live migration. It will be proposed to the upstream
+along with the Zones driver for Nova at some point in the future.
+
+--- nova-13.1.0/nova/objects/migrate_data.py.~1~ 2016-06-14 08:45:49.000000000 -0700
++++ nova-13.1.0/nova/objects/migrate_data.py 2016-08-04 00:28:57.050454220 -0700
+@@ -257,3 +257,26 @@ class XenapiLiveMigrateData(LiveMigrateD
+ @obj_base.NovaObjectRegistry.register
+ class HyperVLiveMigrateData(LiveMigrateData):
+ VERSION = '1.0'
++
++
++@obj_base.NovaObjectRegistry.register
++class SolarisZonesLiveMigrateData(LiveMigrateData):
++ VERSION = '1.0'
++
++ fields = {
++ 'hypervisor_hostname': fields.StringField(),
++ }
++
++ def to_legacy_dict(self, pre_migration_result=False):
++ legacy = super(SolarisZonesLiveMigrateData, self).to_legacy_dict()
++ if self.obj_attr_is_set('hypervisor_hostname'):
++ legacy['hypervisor_hostname'] = self.hypervisor_hostname
++ if pre_migration_result:
++ legacy['pre_live_migration_result'] = {}
++
++ return legacy
++
++ def from_legacy_dict(self, legacy):
++ super(SolarisZonesLiveMigrateData, self).from_legacy_dict(legacy)
++ if 'hypervisor_hostname' in legacy:
++ self.hypervisor_hostname = legacy['hypervisor_hostname']
--- a/components/openstack/nova/patches/12-launch-conf.patch Wed Sep 07 14:48:42 2016 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-In-house patch to include options defined in nova.network.neutronv2.api
-that are missing from the nova.conf generated by
-tools/config/generate_sample.sh. Some of these options are deprecated,
-although valid, in Kilo but they are removed in Liberty.
-
---- nova-2015.1.2/nova/network/neutronv2/api.py.orig 2016-03-22 22:03:30.626104765 -0700
-+++ nova-2015.1.2/nova/network/neutronv2/api.py 2016-03-22 22:19:18.869889129 -0700
-@@ -142,6 +142,7 @@ _ADMIN_AUTH = None
-
- def list_opts():
- list = copy.deepcopy(_neutron_options)
-+ list.extend(neutron_opts)
- list.insert(0, auth.get_common_conf_options()[0])
- # NOTE(dims): There are a lot of auth plugins, we just generate
- # the config options for a few common ones
--- a/components/openstack/nova/patches/13-mysql_cluster_support.patch Wed Sep 07 14:48:42 2016 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1336 +0,0 @@
-This patchset is for bug:
-
-22726259 - Nova needs to support MySQL Cluster
-
-This fixes the following aspects of Nova:
-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.
-
-This has not been committed upstream, but has been filed in launchpad:
-
-https://bugs.launchpad.net/nova/+bug/1564110
-
-
---- nova-2015.1.2/nova/tests/unit/db/test_migrations.py.orig 2016-07-29 13:51:34.115901218 -0600
-+++ nova-2015.1.2/nova/tests/unit/db/test_migrations.py 2016-07-29 13:53:48.790397898 -0600
-@@ -42,6 +42,7 @@ import os
- from migrate import UniqueConstraint
- from migrate.versioning import repository
- import mock
-+from oslo_config import cfg
- from oslo_db.sqlalchemy import test_base
- from oslo_db.sqlalchemy import test_migrations
- from oslo_db.sqlalchemy import utils as oslodbutils
-@@ -59,6 +60,7 @@ from nova import exception
- from nova import test
- from nova.tests import fixtures as nova_fixtures
-
-+CONF = cfg.CONF
-
- LOG = logging.getLogger(__name__)
-
-@@ -905,9 +907,10 @@ class TestNovaMigrationsMySQL(NovaMigrat
- "SELECT count(*) "
- "FROM information_schema.TABLES "
- "WHERE TABLE_SCHEMA='%(database)s' "
-- "AND ENGINE != 'InnoDB' "
-+ "AND ENGINE != '%(mysql_storage_engine)s' "
- "AND TABLE_NAME != 'migrate_version'" %
-- {'database': self.migrate_engine.url.database})
-+ {'database': self.migrate_engine.url.database,
-+ 'mysql_storage_engine': CONF.database.mysql_storage_engine})
- count = noninnodb.scalar()
- self.assertEqual(count, 0, "%d non InnoDB tables created" % count)
-
---- nova-2015.1.2/nova/db/sqlalchemy/utils.py.orig 2016-07-29 13:51:41.029493681 -0600
-+++ nova-2015.1.2/nova/db/sqlalchemy/utils.py 2016-07-29 13:54:14.407369463 -0600
-@@ -13,6 +13,7 @@
- # License for the specific language governing permissions and limitations
- # under the License.
-
-+from oslo_config import cfg
- from oslo_db import exception as db_exc
- from oslo_db.sqlalchemy import utils as oslodbutils
- from oslo_log import log as logging
-@@ -27,6 +28,7 @@ from nova.db.sqlalchemy import api as db
- from nova import exception
- from nova.i18n import _, _LE
-
-+CONF = cfg.CONF
-
- LOG = logging.getLogger(__name__)
-
-@@ -120,7 +122,7 @@ def create_shadow_table(migrate_engine,
-
- shadow_table_name = db._SHADOW_TABLE_PREFIX + table.name
- shadow_table = Table(shadow_table_name, meta, *columns,
-- mysql_engine='InnoDB')
-+ mysql_engine=CONF.database.mysql_storage_engine)
- try:
- shadow_table.create()
- return shadow_table
---- nova-2015.1.2/nova/db/sqlalchemy/api_migrations/migrate_repo/versions/002_instance_mapping.py.orig 2016-07-29 13:51:47.583967956 -0600
-+++ nova-2015.1.2/nova/db/sqlalchemy/api_migrations/migrate_repo/versions/002_instance_mapping.py 2016-07-29 13:54:43.606798707 -0600
-@@ -12,6 +12,7 @@
-
- from migrate.changeset.constraint import ForeignKeyConstraint
- from migrate import UniqueConstraint
-+from oslo_config import cfg
- from sqlalchemy import Column
- from sqlalchemy import DateTime
- from sqlalchemy import Index
-@@ -20,6 +21,7 @@ from sqlalchemy import MetaData
- from sqlalchemy import String
- from sqlalchemy import Table
-
-+CONF = cfg.CONF
-
- def upgrade(migrate_engine):
- meta = MetaData()
-@@ -39,7 +41,7 @@ def upgrade(migrate_engine):
- Index('project_id_idx', 'project_id'),
- ForeignKeyConstraint(columns=['cell_id'],
- refcolumns=[cell_mappings.c.id]),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
- instance_mappings.create(checkfirst=True)
---- nova-2015.1.2/nova/db/sqlalchemy/api_migrations/migrate_repo/versions/001_cell_mapping.py.orig 2016-07-29 13:51:54.363393063 -0600
-+++ nova-2015.1.2/nova/db/sqlalchemy/api_migrations/migrate_repo/versions/001_cell_mapping.py 2016-07-29 13:55:04.323468924 -0600
-@@ -11,6 +11,7 @@
- # under the License.
-
- from migrate import UniqueConstraint
-+from oslo_config import cfg
- from sqlalchemy import Column
- from sqlalchemy import DateTime
- from sqlalchemy import Index
-@@ -20,6 +21,7 @@ from sqlalchemy import String
- from sqlalchemy import Table
- from sqlalchemy import Text
-
-+CONF = cfg.CONF
-
- def upgrade(migrate_engine):
- meta = MetaData()
-@@ -35,7 +37,7 @@ def upgrade(migrate_engine):
- Column('database_connection', Text()),
- UniqueConstraint('uuid', name='uniq_cell_mappings0uuid'),
- Index('uuid_idx', 'uuid'),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
---- nova-2015.1.2/nova/db/sqlalchemy/migrate_repo/versions/252_add_instance_extra_table.py.orig 2016-07-29 13:52:02.695258383 -0600
-+++ nova-2015.1.2/nova/db/sqlalchemy/migrate_repo/versions/252_add_instance_extra_table.py 2016-07-29 13:55:22.831394957 -0600
-@@ -12,6 +12,7 @@
-
-
- from migrate import ForeignKeyConstraint
-+from oslo_config import cfg
- from sqlalchemy import Column
- from sqlalchemy import DateTime
- from sqlalchemy import Index
-@@ -21,6 +22,7 @@ from sqlalchemy import String
- from sqlalchemy import Table
- from sqlalchemy import Text
-
-+CONF = cfg.CONF
-
- def upgrade(migrate_engine):
- meta = MetaData()
-@@ -42,7 +44,7 @@ def upgrade(migrate_engine):
- continue
- _columns = tuple([Column(*args, **kwargs)
- for args, kwargs in columns])
-- table = Table(basename, meta, *_columns, mysql_engine='InnoDB',
-+ table = Table(basename, meta, *_columns, mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8')
- table.create()
-
---- nova-2015.1.2/nova/db/sqlalchemy/migrate_repo/versions/267_instance_uuid_non_nullable.py.orig 2016-07-29 13:52:09.293242604 -0600
-+++ nova-2015.1.2/nova/db/sqlalchemy/migrate_repo/versions/267_instance_uuid_non_nullable.py 2016-07-29 13:55:48.275094037 -0600
-@@ -13,6 +13,7 @@
- # under the License.
-
- from migrate import UniqueConstraint
-+from oslo_config import cfg
- from oslo_db.sqlalchemy import utils
- from oslo_log import log as logging
- from sqlalchemy import MetaData
-@@ -23,6 +24,8 @@ from nova.i18n import _
-
- LOG = logging.getLogger(__name__)
-
-+CONF = cfg.CONF
-+
- UC_NAME = 'uniq_instances0uuid'
-
-
-@@ -90,6 +93,12 @@ def process_null_records(meta, scan=True
-
-
- def upgrade(migrate_engine):
-+
-+ # MySQL Cluster, a.k.a. NDB, has non-NULL records from the beginning.
-+ # If we are using NDB, we will return without migrating as it is not required.
-+ if CONF.database.mysql_storage_engine == "NDBCLUSTER":
-+ return
-+
- # NOTE(mriedem): We're going to load up all of the tables so we can find
- # any with an instance_uuid column since those may be foreign keys back
- # to the instances table and we want to cleanup those records first. We
---- nova-2015.1.2/nova/db/sqlalchemy/migrate_repo/versions/250_remove_instance_groups_metadata.py.orig 2016-07-29 13:52:16.483979825 -0600
-+++ nova-2015.1.2/nova/db/sqlalchemy/migrate_repo/versions/250_remove_instance_groups_metadata.py 2016-07-29 13:56:16.551643868 -0600
-@@ -13,10 +13,11 @@
- # License for the specific language governing permissions and limitations
- # under the License.
-
--
-+from oslo_config import cfg
- from sqlalchemy import MetaData, Table, Column, DateTime, Integer, String, \
- ForeignKey
-
-+CONF = cfg.CONF
-
- def upgrade(migrate_engine):
- """Remove the instance_group_metadata table."""
-@@ -49,7 +50,7 @@ def downgrade(migrate_engine):
- Column('value', String(length=255)),
- Column('group_id', Integer, ForeignKey('instance_groups.id'),
- nullable=False),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8',
- )
- group_metadata.create()
-@@ -65,7 +66,7 @@ def downgrade(migrate_engine):
- Column('group_id', Integer,
- ForeignKey('shadow_instance_groups.id'),
- nullable=False),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8',
- )
- shadow_group_metadata.create()
---- nova-2015.1.2/nova/db/sqlalchemy/migrate_repo/versions/216_havana.py.orig 2016-07-29 13:52:30.458310285 -0600
-+++ nova-2015.1.2/nova/db/sqlalchemy/migrate_repo/versions/216_havana.py 2016-07-29 14:00:50.939986347 -0600
-@@ -14,6 +14,7 @@
-
- from migrate.changeset import UniqueConstraint
- from migrate import ForeignKeyConstraint
-+from oslo_config import cfg
- from oslo_log import log as logging
- from sqlalchemy import Boolean, BigInteger, Column, DateTime, Enum, Float
- from sqlalchemy import dialects
-@@ -25,6 +26,13 @@ from nova.i18n import _LE
-
- LOG = logging.getLogger(__name__)
-
-+CONF = cfg.CONF
-+
-+if CONF.database.mysql_storage_engine == "NDBCLUSTER":
-+ db_string_length = 128
-+else:
-+ db_string_length = 255
-+
-
- # Note on the autoincrement flag: this is defaulted for primary key columns
- # of integral type, so is no longer set explicitly in such cases.
-@@ -76,7 +84,7 @@ def _create_shadow_tables(migrate_engine
-
- shadow_table_name = 'shadow_' + table_name
- shadow_table = Table(shadow_table_name, meta, *columns,
-- mysql_engine='InnoDB')
-+ mysql_engine=CONF.database.mysql_storage_engine)
- try:
- shadow_table.create()
- except Exception:
-@@ -167,7 +175,7 @@ def _create_dump_tables(migrate_engine):
- else:
- columns.append(column.copy())
- table_dump = Table(dump_table_name, meta, *columns,
-- mysql_engine='InnoDB')
-+ mysql_engine=CONF.database.mysql_storage_engine)
- table_dump.create()
-
-
-@@ -180,14 +188,14 @@ def upgrade(migrate_engine):
- Column('updated_at', DateTime),
- Column('deleted_at', DateTime),
- Column('id', Integer, primary_key=True, nullable=False),
-- Column('hypervisor', String(length=255)),
-- Column('os', String(length=255)),
-- Column('architecture', String(length=255)),
-- Column('version', String(length=255)),
-- Column('url', String(length=255)),
-- Column('md5hash', String(length=255)),
-+ Column('hypervisor', String(length=db_string_length)),
-+ Column('os', String(length=db_string_length)),
-+ Column('architecture', String(length=db_string_length)),
-+ Column('version', String(length=db_string_length)),
-+ Column('url', String(length=db_string_length)),
-+ Column('md5hash', String(length=db_string_length)),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -196,11 +204,11 @@ def upgrade(migrate_engine):
- Column('updated_at', DateTime),
- Column('deleted_at', DateTime),
- Column('id', Integer, primary_key=True, nullable=False),
-- Column('host', String(length=255)),
-+ Column('host', String(length=db_string_length)),
- Column('aggregate_id', Integer, ForeignKey('aggregates.id'),
- nullable=False),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -211,10 +219,10 @@ def upgrade(migrate_engine):
- Column('id', Integer, primary_key=True, nullable=False),
- Column('aggregate_id', Integer, ForeignKey('aggregates.id'),
- nullable=False),
-- Column('key', String(length=255), nullable=False),
-- Column('value', String(length=255), nullable=False),
-+ Column('key', String(length=db_string_length), nullable=False),
-+ Column('value', String(length=db_string_length), nullable=False),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -223,9 +231,9 @@ def upgrade(migrate_engine):
- Column('updated_at', DateTime),
- Column('deleted_at', DateTime),
- Column('id', Integer, primary_key=True, nullable=False),
-- Column('name', String(length=255)),
-+ Column('name', String(length=db_string_length)),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -234,7 +242,7 @@ def upgrade(migrate_engine):
- Column('updated_at', DateTime),
- Column('deleted_at', DateTime),
- Column('id', Integer, primary_key=True, nullable=False),
-- Column('device_name', String(length=255), nullable=True),
-+ Column('device_name', String(length=db_string_length), nullable=True),
- Column('delete_on_termination', Boolean),
- Column('snapshot_id', String(length=36), nullable=True),
- Column('volume_id', String(length=36), nullable=True),
-@@ -243,14 +251,14 @@ def upgrade(migrate_engine):
- Column('connection_info', MediumText()),
- Column('instance_uuid', String(length=36)),
- Column('deleted', Integer),
-- Column('source_type', String(length=255), nullable=True),
-- Column('destination_type', String(length=255), nullable=True),
-- Column('guest_format', String(length=255), nullable=True),
-- Column('device_type', String(length=255), nullable=True),
-- Column('disk_bus', String(length=255), nullable=True),
-+ Column('source_type', String(length=db_string_length), nullable=True),
-+ Column('destination_type', String(length=db_string_length), nullable=True),
-+ Column('guest_format', String(length=db_string_length), nullable=True),
-+ Column('device_type', String(length=db_string_length), nullable=True),
-+ Column('disk_bus', String(length=db_string_length), nullable=True),
- Column('boot_index', Integer),
- Column('image_id', String(length=36), nullable=True),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -263,12 +271,12 @@ def upgrade(migrate_engine):
- Column('last_refreshed', DateTime),
- Column('bw_in', BigInteger),
- Column('bw_out', BigInteger),
-- Column('mac', String(length=255)),
-+ Column('mac', String(length=db_string_length)),
- Column('uuid', String(length=36)),
- Column('last_ctr_in', BigInteger()),
- Column('last_ctr_out', BigInteger()),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -277,14 +285,14 @@ def upgrade(migrate_engine):
- Column('updated_at', DateTime),
- Column('deleted_at', DateTime),
- Column('id', Integer, primary_key=True, nullable=False),
-- Column('api_url', String(length=255)),
-+ Column('api_url', String(length=db_string_length)),
- Column('weight_offset', Float),
- Column('weight_scale', Float),
-- Column('name', String(length=255)),
-+ Column('name', String(length=db_string_length)),
- Column('is_parent', Boolean),
- Column('deleted', Integer),
-- Column('transport_url', String(length=255), nullable=False),
-- mysql_engine='InnoDB',
-+ Column('transport_url', String(length=db_string_length), nullable=False),
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -293,11 +301,11 @@ def upgrade(migrate_engine):
- Column('updated_at', DateTime),
- Column('deleted_at', DateTime),
- Column('id', Integer, primary_key=True, nullable=False),
-- Column('user_id', String(length=255)),
-- Column('project_id', String(length=255)),
-- Column('file_name', String(length=255)),
-+ Column('user_id', String(length=db_string_length)),
-+ Column('project_id', String(length=db_string_length)),
-+ Column('file_name', String(length=db_string_length)),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -307,10 +315,10 @@ def upgrade(migrate_engine):
- Column('deleted_at', DateTime),
- Column('id', Integer, primary_key=True, nullable=False),
- Column('compute_node_id', Integer, nullable=False),
-- Column('key', String(length=255), nullable=False),
-- Column('value', String(length=255)),
-+ Column('key', String(length=db_string_length), nullable=False),
-+ Column('value', String(length=db_string_length)),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -334,12 +342,12 @@ def upgrade(migrate_engine):
- Column('free_disk_gb', Integer),
- Column('current_workload', Integer),
- Column('running_vms', Integer),
-- Column('hypervisor_hostname', String(length=255)),
-+ Column('hypervisor_hostname', String(length=db_string_length)),
- Column('deleted', Integer),
- Column('host_ip', InetSmall()),
- Column('supported_instances', Text),
- Column('pci_stats', Text, nullable=True),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -349,14 +357,14 @@ def upgrade(migrate_engine):
- Column('deleted_at', DateTime),
- Column('id', Integer, primary_key=True, nullable=False),
- Column('address', InetSmall()),
-- Column('username', String(length=255)),
-- Column('password', String(length=255)),
-- Column('console_type', String(length=255)),
-- Column('public_hostname', String(length=255)),
-- Column('host', String(length=255)),
-- Column('compute_host', String(length=255)),
-+ Column('username', String(length=db_string_length)),
-+ Column('password', String(length=db_string_length)),
-+ Column('console_type', String(length=db_string_length)),
-+ Column('public_hostname', String(length=db_string_length)),
-+ Column('host', String(length=db_string_length)),
-+ Column('compute_host', String(length=db_string_length)),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -365,15 +373,15 @@ def upgrade(migrate_engine):
- Column('updated_at', DateTime),
- Column('deleted_at', DateTime),
- Column('id', Integer, primary_key=True, nullable=False),
-- Column('instance_name', String(length=255)),
-- Column('password', String(length=255)),
-+ Column('instance_name', String(length=db_string_length)),
-+ Column('password', String(length=db_string_length)),
- Column('port', Integer),
- Column('pool_id', Integer, ForeignKey('console_pools.id')),
- Column('instance_uuid', String(length=36),
- ForeignKey('instances.uuid',
- name='consoles_instance_uuid_fkey')),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -382,11 +390,11 @@ def upgrade(migrate_engine):
- Column('updated_at', DateTime),
- Column('deleted_at', DateTime),
- Column('deleted', Boolean),
-- Column('domain', String(length=255), primary_key=True, nullable=False),
-- Column('scope', String(length=255)),
-- Column('availability_zone', String(length=255)),
-- Column('project_id', String(length=255)),
-- mysql_engine='InnoDB',
-+ Column('domain', String(length=db_string_length), primary_key=True, nullable=False),
-+ Column('scope', String(length=db_string_length)),
-+ Column('availability_zone', String(length=db_string_length)),
-+ Column('project_id', String(length=db_string_length)),
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -401,10 +409,10 @@ def upgrade(migrate_engine):
- Column('leased', Boolean),
- Column('reserved', Boolean),
- Column('virtual_interface_id', Integer),
-- Column('host', String(length=255)),
-+ Column('host', String(length=db_string_length)),
- Column('instance_uuid', String(length=36)),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -415,13 +423,13 @@ def upgrade(migrate_engine):
- Column('id', Integer, primary_key=True, nullable=False),
- Column('address', InetSmall()),
- Column('fixed_ip_id', Integer),
-- Column('project_id', String(length=255)),
-- Column('host', String(length=255)),
-+ Column('project_id', String(length=db_string_length)),
-+ Column('host', String(length=db_string_length)),
- Column('auto_assigned', Boolean),
-- Column('pool', String(length=255)),
-- Column('interface', String(length=255)),
-+ Column('pool', String(length=db_string_length)),
-+ Column('interface', String(length=db_string_length)),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -436,7 +444,7 @@ def upgrade(migrate_engine):
- Column('details', MediumText()),
- Column('host', String(length=255)),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -447,7 +455,7 @@ def upgrade(migrate_engine):
- Column('id', Integer, primary_key=True, nullable=False),
- Column('uuid', String(36), nullable=False),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -459,7 +467,7 @@ def upgrade(migrate_engine):
- Column('network_info', MediumText()),
- Column('instance_uuid', String(length=36), nullable=False),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -469,13 +477,13 @@ def upgrade(migrate_engine):
- Column('deleted_at', DateTime),
- Column('deleted', Integer),
- Column('id', Integer, primary_key=True, nullable=False),
-- Column('user_id', String(length=255)),
-- Column('project_id', String(length=255)),
-+ Column('user_id', String(length=db_string_length)),
-+ Column('project_id', String(length=db_string_length)),
- Column('uuid', String(length=36), nullable=False),
-- Column('name', String(length=255)),
-+ Column('name', String(length=db_string_length)),
- UniqueConstraint('uuid', 'deleted',
- name='uniq_instance_groups0uuid0deleted'),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8',
- )
-
-@@ -485,11 +493,11 @@ def upgrade(migrate_engine):
- Column('deleted_at', DateTime),
- Column('deleted', Integer),
- Column('id', Integer, primary_key=True, nullable=False),
-- Column('key', String(length=255)),
-- Column('value', String(length=255)),
-+ Column('key', String(length=db_string_length)),
-+ Column('value', String(length=db_string_length)),
- Column('group_id', Integer, ForeignKey('instance_groups.id'),
- nullable=False),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8',
- )
-
-@@ -499,10 +507,10 @@ def upgrade(migrate_engine):
- Column('deleted_at', DateTime),
- Column('deleted', Integer),
- Column('id', Integer, primary_key=True, nullable=False),
-- Column('policy', String(length=255)),
-+ Column('policy', String(length=db_string_length)),
- Column('group_id', Integer, ForeignKey('instance_groups.id'),
- nullable=False),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8',
- )
-
-@@ -512,10 +520,10 @@ def upgrade(migrate_engine):
- Column('deleted_at', DateTime),
- Column('deleted', Integer),
- Column('id', Integer, primary_key=True, nullable=False),
-- Column('instance_id', String(length=255)),
-+ Column('instance_id', String(length=db_string_length)),
- Column('group_id', Integer, ForeignKey('instance_groups.id'),
- nullable=False),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8',
- )
-
-@@ -528,7 +536,7 @@ def upgrade(migrate_engine):
- Column('value', String(length=255)),
- Column('instance_uuid', String(length=36), nullable=True),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -541,7 +549,7 @@ def upgrade(migrate_engine):
- Column('key', String(length=255), nullable=False),
- Column('value', String(length=255)),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -555,7 +563,7 @@ def upgrade(migrate_engine):
- Column('key', String(length=255)),
- Column('value', String(length=255)),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -565,9 +573,9 @@ def upgrade(migrate_engine):
- Column('deleted_at', DateTime),
- Column('id', Integer, primary_key=True, nullable=False),
- Column('instance_type_id', Integer, nullable=False),
-- Column('project_id', String(length=255)),
-+ Column('project_id', String(length=db_string_length)),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -575,20 +583,20 @@ def upgrade(migrate_engine):
- Column('created_at', DateTime),
- Column('updated_at', DateTime),
- Column('deleted_at', DateTime),
-- Column('name', String(length=255)),
-+ Column('name', String(length=db_string_length)),
- Column('id', Integer, primary_key=True, nullable=False),
- Column('memory_mb', Integer, nullable=False),
- Column('vcpus', Integer, nullable=False),
- Column('swap', Integer, nullable=False),
- Column('vcpu_weight', Integer),
-- Column('flavorid', String(length=255)),
-+ Column('flavorid', String(length=db_string_length)),
- Column('rxtx_factor', Float),
- Column('root_gb', Integer),
- Column('ephemeral_gb', Integer),
- Column('disabled', Boolean),
- Column('is_public', Boolean),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -599,54 +607,54 @@ def upgrade(migrate_engine):
- Column('deleted_at', DateTime),
- Column('id', Integer, primary_key=True, nullable=False),
- Column('internal_id', Integer),
-- Column('user_id', String(length=255)),
-- Column('project_id', String(length=255)),
-- Column('image_ref', String(length=255)),
-- Column('kernel_id', String(length=255)),
-- Column('ramdisk_id', String(length=255)),
-+ Column('user_id', String(length=db_string_length)),
-+ Column('project_id', String(length=db_string_length)),
-+ Column('image_ref', String(length=db_string_length)),
-+ Column('kernel_id', String(length=db_string_length)),
-+ Column('ramdisk_id', String(length=db_string_length)),
- Column('launch_index', Integer),
-- Column('key_name', String(length=255)),
-+ Column('key_name', String(length=db_string_length)),
- Column('key_data', MediumText()),
- Column('power_state', Integer),
-- Column('vm_state', String(length=255)),
-+ Column('vm_state', String(length=db_string_length)),
- Column('memory_mb', Integer),
- Column('vcpus', Integer),
-- Column('hostname', String(length=255)),
-- Column('host', String(length=255)),
-+ Column('hostname', String(length=db_string_length)),
-+ Column('host', String(length=db_string_length)),
- Column('user_data', MediumText()),
-- Column('reservation_id', String(length=255)),
-+ Column('reservation_id', String(length=db_string_length)),
- Column('scheduled_at', DateTime),
- Column('launched_at', DateTime),
- Column('terminated_at', DateTime),
-- Column('display_name', String(length=255)),
-- Column('display_description', String(length=255)),
-- Column('availability_zone', String(length=255)),
-+ Column('display_name', String(length=db_string_length)),
-+ Column('display_description', String(length=db_string_length)),
-+ Column('availability_zone', String(length=db_string_length)),
- Column('locked', Boolean),
-- Column('os_type', String(length=255)),
-+ Column('os_type', String(length=db_string_length)),
- Column('launched_on', MediumText()),
- Column('instance_type_id', Integer),
-- Column('vm_mode', String(length=255)),
-- Column('uuid', String(length=36)),
-- Column('architecture', String(length=255)),
-- Column('root_device_name', String(length=255)),
-+ Column('vm_mode', String(length=db_string_length)),
-+ Column('uuid', String(length=36), nullable=False),
-+ Column('architecture', String(length=db_string_length)),
-+ Column('root_device_name', String(length=db_string_length)),
- Column('access_ip_v4', InetSmall()),
- Column('access_ip_v6', InetSmall()),
-- Column('config_drive', String(length=255)),
-- Column('task_state', String(length=255)),
-- Column('default_ephemeral_device', String(length=255)),
-- Column('default_swap_device', String(length=255)),
-+ Column('config_drive', String(length=db_string_length)),
-+ Column('task_state', String(length=db_string_length)),
-+ Column('default_ephemeral_device', String(length=db_string_length)),
-+ Column('default_swap_device', String(length=db_string_length)),
- Column('progress', Integer),
- Column('auto_disk_config', Boolean),
- Column('shutdown_terminate', Boolean),
- Column('disable_terminate', Boolean),
- Column('root_gb', Integer),
- Column('ephemeral_gb', Integer),
-- Column('cell_name', String(length=255)),
-- Column('node', String(length=255)),
-+ Column('cell_name', String(length=db_string_length)),
-+ Column('node', String(length=db_string_length)),
- Column('deleted', Integer),
- Column('locked_by', inst_lock_enum),
- Column('cleaned', Integer, default=0),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -655,16 +663,16 @@ def upgrade(migrate_engine):
- Column('updated_at', DateTime),
- Column('deleted_at', DateTime),
- Column('id', Integer, primary_key=True, nullable=False),
-- Column('action', String(length=255)),
-+ Column('action', String(length=db_string_length)),
- Column('instance_uuid', String(length=36)),
-- Column('request_id', String(length=255)),
-- Column('user_id', String(length=255)),
-- Column('project_id', String(length=255)),
-+ Column('request_id', String(length=db_string_length)),
-+ Column('user_id', String(length=db_string_length)),
-+ Column('project_id', String(length=db_string_length)),
- Column('start_time', DateTime),
- Column('finish_time', DateTime),
-- Column('message', String(length=255)),
-+ Column('message', String(length=db_string_length)),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8',
- )
-
-@@ -673,14 +681,14 @@ def upgrade(migrate_engine):
- Column('updated_at', DateTime),
- Column('deleted_at', DateTime),
- Column('id', Integer, primary_key=True, nullable=False),
-- Column('event', String(length=255)),
-+ Column('event', String(length=db_string_length)),
- Column('action_id', Integer, ForeignKey('instance_actions.id')),
- Column('start_time', DateTime),
- Column('finish_time', DateTime),
-- Column('result', String(length=255)),
-+ Column('result', String(length=db_string_length)),
- Column('traceback', Text),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8',
- )
-
-@@ -690,10 +698,10 @@ def upgrade(migrate_engine):
- Column('deleted_at', DateTime),
- Column('id', Integer, primary_key=True, nullable=False),
- Column('target_num', Integer),
-- Column('host', String(length=255)),
-+ Column('host', String(length=db_string_length)),
- Column('volume_id', String(length=36), nullable=True),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -702,12 +710,12 @@ def upgrade(migrate_engine):
- Column('updated_at', DateTime),
- Column('deleted_at', DateTime),
- Column('id', Integer, primary_key=True, nullable=False),
-- Column('name', String(length=255)),
-- Column('user_id', String(length=255)),
-- Column('fingerprint', String(length=255)),
-+ Column('name', String(length=db_string_length)),
-+ Column('user_id', String(length=db_string_length)),
-+ Column('fingerprint', String(length=db_string_length)),
- Column('public_key', MediumText()),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -716,17 +724,17 @@ def upgrade(migrate_engine):
- Column('updated_at', DateTime),
- Column('deleted_at', DateTime),
- Column('id', Integer, primary_key=True, nullable=False),
-- Column('source_compute', String(length=255)),
-- Column('dest_compute', String(length=255)),
-- Column('dest_host', String(length=255)),
-- Column('status', String(length=255)),
-+ Column('source_compute', String(length=db_string_length)),
-+ Column('dest_compute', String(length=db_string_length)),
-+ Column('dest_host', String(length=db_string_length)),
-+ Column('status', String(length=db_string_length)),
- Column('instance_uuid', String(length=36)),
- Column('old_instance_type_id', Integer),
- Column('new_instance_type_id', Integer),
-- Column('source_node', String(length=255)),
-- Column('dest_node', String(length=255)),
-+ Column('source_node', String(length=db_string_length)),
-+ Column('dest_node', String(length=db_string_length)),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -738,7 +746,7 @@ def upgrade(migrate_engine):
- Column('injected', Boolean),
- Column('cidr', Inet()),
- Column('netmask', InetSmall()),
-- Column('bridge', String(length=255)),
-+ Column('bridge', String(length=db_string_length)),
- Column('gateway', InetSmall()),
- Column('broadcast', InetSmall()),
- Column('dns1', InetSmall()),
-@@ -747,20 +755,20 @@ def upgrade(migrate_engine):
- Column('vpn_public_port', Integer),
- Column('vpn_private_address', InetSmall()),
- Column('dhcp_start', InetSmall()),
-- Column('project_id', String(length=255)),
-- Column('host', String(length=255)),
-+ Column('project_id', String(length=db_string_length)),
-+ Column('host', String(length=db_string_length)),
- Column('cidr_v6', Inet()),
- Column('gateway_v6', InetSmall()),
-- Column('label', String(length=255)),
-+ Column('label', String(length=db_string_length)),
- Column('netmask_v6', InetSmall()),
-- Column('bridge_interface', String(length=255)),
-+ Column('bridge_interface', String(length=db_string_length)),
- Column('multi_host', Boolean),
- Column('dns2', InetSmall()),
- Column('uuid', String(length=36)),
- Column('priority', Integer),
- Column('rxtx_base', Integer),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -776,8 +784,8 @@ def upgrade(migrate_engine):
- Column('product_id', String(4)),
- Column('vendor_id', String(4)),
- Column('dev_type', String(8)),
-- Column('dev_id', String(255)),
-- Column('label', String(255), nullable=False),
-+ Column('dev_id', String(db_string_length)),
-+ Column('label', String(db_string_length), nullable=False),
- Column('status', String(36), nullable=False),
- Column('extra_info', Text, nullable=True),
- Column('instance_uuid', String(36), nullable=True),
-@@ -788,7 +796,7 @@ def upgrade(migrate_engine):
- UniqueConstraint('compute_node_id',
- 'address', 'deleted',
- name=pci_devices_uc_name),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8')
-
- provider_fw_rules = Table('provider_fw_rules', meta,
-@@ -801,7 +809,7 @@ def upgrade(migrate_engine):
- Column('to_port', Integer),
- Column('cidr', Inet()),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -810,11 +818,11 @@ def upgrade(migrate_engine):
- Column('updated_at', DateTime),
- Column('deleted_at', DateTime),
- Column('id', Integer, primary_key=True, nullable=False),
-- Column('class_name', String(length=255)),
-- Column('resource', String(length=255)),
-+ Column('class_name', String(length=db_string_length)),
-+ Column('resource', String(length=db_string_length)),
- Column('hard_limit', Integer),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -823,14 +831,14 @@ def upgrade(migrate_engine):
- Column('updated_at', DateTime),
- Column('deleted_at', DateTime),
- Column('id', Integer, primary_key=True, nullable=False),
-- Column('project_id', String(length=255)),
-- Column('resource', String(length=255)),
-+ Column('project_id', String(length=db_string_length)),
-+ Column('resource', String(length=db_string_length)),
- Column('in_use', Integer, nullable=False),
- Column('reserved', Integer, nullable=False),
- Column('until_refresh', Integer),
- Column('deleted', Integer),
-- Column('user_id', String(length=255)),
-- mysql_engine='InnoDB',
-+ Column('user_id', String(length=db_string_length)),
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -839,11 +847,11 @@ def upgrade(migrate_engine):
- Column('created_at', DateTime),
- Column('updated_at', DateTime),
- Column('deleted_at', DateTime),
-- Column('project_id', String(length=255)),
-- Column('resource', String(length=255), nullable=False),
-+ Column('project_id', String(length=db_string_length)),
-+ Column('resource', String(length=db_string_length), nullable=False),
- Column('hard_limit', Integer),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -856,18 +864,18 @@ def upgrade(migrate_engine):
- Column('deleted_at', DateTime),
- Column('deleted', Integer),
- Column('user_id',
-- String(length=255),
-+ String(length=db_string_length),
- nullable=False),
- Column('project_id',
-- String(length=255),
-+ String(length=db_string_length),
- nullable=False),
- Column('resource',
-- String(length=255),
-+ String(length=db_string_length),
- nullable=False),
- Column('hard_limit', Integer, nullable=True),
- UniqueConstraint('user_id', 'project_id', 'resource',
- 'deleted', name=uniq_name),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8',
- )
-
-@@ -878,13 +886,13 @@ def upgrade(migrate_engine):
- Column('id', Integer, primary_key=True, nullable=False),
- Column('uuid', String(length=36), nullable=False),
- Column('usage_id', Integer, nullable=False),
-- Column('project_id', String(length=255)),
-- Column('resource', String(length=255)),
-+ Column('project_id', String(length=db_string_length)),
-+ Column('resource', String(length=db_string_length)),
- Column('delta', Integer, nullable=False),
- Column('expire', DateTime),
- Column('deleted', Integer),
-- Column('user_id', String(length=255)),
-- mysql_engine='InnoDB',
-+ Column('user_id', String(length=db_string_length)),
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -895,7 +903,7 @@ def upgrade(migrate_engine):
- Column('id', Integer, primary_key=True, nullable=False),
- Column('uuid', String(length=36), nullable=False),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -908,7 +916,7 @@ def upgrade(migrate_engine):
- Column('security_group_id', Integer),
- Column('instance_uuid', String(length=36)),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -918,13 +926,13 @@ def upgrade(migrate_engine):
- Column('deleted_at', DateTime),
- Column('id', Integer, primary_key=True, nullable=False),
- Column('parent_group_id', Integer, ForeignKey('security_groups.id')),
-- Column('protocol', String(length=255)),
-+ Column('protocol', String(length=db_string_length)),
- Column('from_port', Integer),
- Column('to_port', Integer),
- Column('cidr', Inet()),
- Column('group_id', Integer, ForeignKey('security_groups.id')),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -933,12 +941,12 @@ def upgrade(migrate_engine):
- Column('updated_at', DateTime),
- Column('deleted_at', DateTime),
- Column('id', Integer, primary_key=True, nullable=False),
-- Column('name', String(length=255)),
-- Column('description', String(length=255)),
-- Column('user_id', String(length=255)),
-- Column('project_id', String(length=255)),
-+ Column('name', String(length=db_string_length)),
-+ Column('description', String(length=db_string_length)),
-+ Column('user_id', String(length=db_string_length)),
-+ Column('project_id', String(length=db_string_length)),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -952,7 +960,7 @@ def upgrade(migrate_engine):
- Column('from_port', Integer),
- Column('to_port', Integer),
- Column('cidr', Inet()),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8',
- )
-
-@@ -961,14 +969,14 @@ def upgrade(migrate_engine):
- Column('updated_at', DateTime),
- Column('deleted_at', DateTime),
- Column('id', Integer, primary_key=True, nullable=False),
-- Column('host', String(length=255)),
-- Column('binary', String(length=255)),
-- Column('topic', String(length=255)),
-+ Column('host', String(length=db_string_length)),
-+ Column('binary', String(length=db_string_length)),
-+ Column('topic', String(length=db_string_length)),
- Column('report_count', Integer, nullable=False),
- Column('disabled', Boolean),
- Column('deleted', Integer),
-- Column('disabled_reason', String(length=255)),
-- mysql_engine='InnoDB',
-+ Column('disabled_reason', String(length=db_string_length)),
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -979,7 +987,7 @@ def upgrade(migrate_engine):
- Column('id', Integer, primary_key=True, nullable=False),
- Column('uuid', String(length=36), nullable=False),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -989,16 +997,16 @@ def upgrade(migrate_engine):
- Column('deleted_at', DateTime),
- Column('id', String(length=36), primary_key=True, nullable=False),
- Column('volume_id', String(length=36), nullable=False),
-- Column('user_id', String(length=255)),
-- Column('project_id', String(length=255)),
-- Column('status', String(length=255)),
-- Column('progress', String(length=255)),
-+ Column('user_id', String(length=db_string_length)),
-+ Column('project_id', String(length=db_string_length)),
-+ Column('status', String(length=db_string_length)),
-+ Column('progress', String(length=db_string_length)),
- Column('volume_size', Integer),
- Column('scheduled_at', DateTime),
-- Column('display_name', String(length=255)),
-- Column('display_description', String(length=255)),
-+ Column('display_name', String(length=db_string_length)),
-+ Column('display_description', String(length=db_string_length)),
- Column('deleted', String(length=36)),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -1007,16 +1015,16 @@ def upgrade(migrate_engine):
- Column('updated_at', DateTime),
- Column('deleted_at', DateTime),
- Column('id', Integer, primary_key=True, nullable=False),
-- Column('task_name', String(length=255), nullable=False),
-- Column('state', String(length=255), nullable=False),
-- Column('host', String(length=255), nullable=False),
-+ Column('task_name', String(length=db_string_length), nullable=False),
-+ Column('state', String(length=db_string_length), nullable=False),
-+ Column('host', String(length=db_string_length), nullable=False),
- Column('period_beginning', DateTime, nullable=False),
- Column('period_ending', DateTime, nullable=False),
-- Column('message', String(length=255), nullable=False),
-+ Column('message', String(length=db_string_length), nullable=False),
- Column('task_items', Integer),
- Column('errors', Integer),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -1025,12 +1033,12 @@ def upgrade(migrate_engine):
- Column('updated_at', DateTime),
- Column('deleted_at', DateTime),
- Column('id', Integer, primary_key=True, nullable=False),
-- Column('address', String(length=255)),
-+ Column('address', String(length=db_string_length)),
- Column('network_id', Integer),
- Column('uuid', String(length=36)),
- Column('instance_uuid', String(length=36), nullable=True),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -1041,7 +1049,7 @@ def upgrade(migrate_engine):
- Column('id', Integer, primary_key=True, nullable=False),
- Column('uuid', String(length=36), nullable=False),
- Column('deleted', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -1050,20 +1058,20 @@ def upgrade(migrate_engine):
- Column('updated_at', DateTime),
- Column('deleted_at', DateTime),
- Column('id', String(length=36), primary_key=True, nullable=False),
-- Column('ec2_id', String(length=255)),
-- Column('user_id', String(length=255)),
-- Column('project_id', String(length=255)),
-- Column('host', String(length=255)),
-+ Column('ec2_id', String(length=db_string_length)),
-+ Column('user_id', String(length=db_string_length)),
-+ Column('project_id', String(length=db_string_length)),
-+ Column('host', String(length=db_string_length)),
- Column('size', Integer),
-- Column('availability_zone', String(length=255)),
-- Column('mountpoint', String(length=255)),
-- Column('status', String(length=255)),
-- Column('attach_status', String(length=255)),
-+ Column('availability_zone', String(length=db_string_length)),
-+ Column('mountpoint', String(length=db_string_length)),
-+ Column('status', String(length=db_string_length)),
-+ Column('attach_status', String(length=db_string_length)),
- Column('scheduled_at', DateTime),
- Column('launched_at', DateTime),
- Column('terminated_at', DateTime),
-- Column('display_name', String(length=255)),
-- Column('display_description', String(length=255)),
-+ Column('display_name', String(length=db_string_length)),
-+ Column('display_description', String(length=db_string_length)),
- Column('provider_location', String(length=256)),
- Column('provider_auth', String(length=256)),
- Column('snapshot_id', String(length=36)),
-@@ -1071,7 +1079,7 @@ def upgrade(migrate_engine):
- Column('instance_uuid', String(length=36)),
- Column('attach_time', DateTime),
- Column('deleted', String(length=36)),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -1095,8 +1103,8 @@ def upgrade(migrate_engine):
- Column("instance_uuid", String(length=36)),
- Column("project_id", String(length=36)),
- Column("user_id", String(length=36)),
-- Column("availability_zone", String(length=255)),
-- mysql_engine='InnoDB',
-+ Column("availability_zone", String(length=db_string_length)),
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
-
-@@ -1223,15 +1231,19 @@ def upgrade(migrate_engine):
- table=aggregate_hosts,
- name=uc_name).create()
-
-- uc_name = 'uniq_aggregate_metadata0aggregate_id0key0deleted'
-- UniqueConstraint('aggregate_id', 'key', 'deleted',
-- table=aggregate_metadata,
-- name=uc_name).create()
--
-- uc_name = 'uniq_instance_type_extra_specs0instance_type_id0key0deleted'
-- UniqueConstraint('instance_type_id', 'key', 'deleted',
-- table=instance_type_extra_specs,
-- name=uc_name).create()
-+ # Constraint does not work in MySQL Cluster, a.k.a NDB.
-+ if CONF.database.mysql_storage_engine != "NDBCLUSTER":
-+ uc_name = 'uniq_aggregate_metadata0aggregate_id0key0deleted'
-+ UniqueConstraint('aggregate_id', 'key', 'deleted',
-+ table=aggregate_metadata,
-+ name=uc_name).create()
-+
-+ # Constraint does not work in MySQL Cluster, a.k.a NDB.
-+ if CONF.database.mysql_storage_engine != "NDBCLUSTER":
-+ uc_name = 'uniq_instance_type_extra_specs0instance_type_id0key0deleted'
-+ UniqueConstraint('instance_type_id', 'key', 'deleted',
-+ table=instance_type_extra_specs,
-+ name=uc_name).create()
-
- # created first (to preserve ordering for schema diffs)
- mysql_pre_indexes = [
---- nova-2015.1.2/nova/db/sqlalchemy/migrate_repo/versions/266_add_instance_tags.py.orig 2016-07-29 13:52:37.502198001 -0600
-+++ nova-2015.1.2/nova/db/sqlalchemy/migrate_repo/versions/266_add_instance_tags.py 2016-07-29 13:57:00.720993583 -0600
-@@ -10,8 +10,10 @@
- # License for the specific language governing permissions and limitations
- # under the License.
-
-+from oslo_config import cfg
- import sqlalchemy as sa
-
-+CONF = cfg.CONF
-
- def upgrade(migrate_engine):
- meta = sa.MetaData(bind=migrate_engine)
-@@ -22,7 +24,7 @@ def upgrade(migrate_engine):
- sa.Column('tag', sa.Unicode(80), primary_key=True,
- nullable=False),
- sa.Index('tags_tag_idx', 'tag'),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8')
- tags.create()
-
---- nova-2015.1.2/nova/db/sqlalchemy/migrate_repo/versions/233_add_stats_in_compute_nodes.py.orig 2016-07-29 13:52:44.501555489 -0600
-+++ nova-2015.1.2/nova/db/sqlalchemy/migrate_repo/versions/233_add_stats_in_compute_nodes.py 2016-07-29 13:57:22.617030985 -0600
-@@ -14,6 +14,7 @@
- # under the License.
-
-
-+from oslo_config import cfg
- from oslo_utils import timeutils
- from sqlalchemy import Column
- from sqlalchemy import DateTime
-@@ -25,6 +26,7 @@ from sqlalchemy import String
- from sqlalchemy import Table
- from sqlalchemy import Text
-
-+CONF = cfg.CONF
-
- def upgrade(engine):
- meta = MetaData()
-@@ -73,7 +75,7 @@ def downgrade(engine):
- index=True),
- Index('compute_node_stats_node_id_and_deleted_idx',
- 'compute_node_id', 'deleted'),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
- table.create()
-@@ -88,7 +90,7 @@ def downgrade(engine):
- Column('key', String(255), nullable=False),
- Column('value', String(255), nullable=True),
- Column('compute_node_id', Integer),
-- mysql_engine='InnoDB',
-+ mysql_engine=CONF.database.mysql_storage_engine,
- mysql_charset='utf8'
- )
- table.create()
---- nova-2015.1.2/nova/db/sqlalchemy/migrate_repo/versions/249_remove_duplicate_index.py.orig 2016-07-29 13:52:51.444080181 -0600
-+++ nova-2015.1.2/nova/db/sqlalchemy/migrate_repo/versions/249_remove_duplicate_index.py 2016-07-29 14:01:52.610985774 -0600
-@@ -13,10 +13,9 @@
- # License for the specific language governing permissions and limitations
- # under the License.
-
--
-+from migrate.changeset.constraint import ForeignKeyConstraint
- from sqlalchemy import MetaData, Table
-
--
- INDEX_NAME = 'block_device_mapping_instance_uuid_virtual_name_device_name_idx'
-
-
-@@ -25,11 +24,20 @@ def upgrade(migrate_engine):
-
- meta = MetaData(bind=migrate_engine)
-
-+ # Remove the foreign key so that the index can be removed correctly
-+ block_device_mapping = Table('block_device_mapping', meta, autoload=True)
-+ instances = Table('instances', meta, autoload=True)
-+ fkey = ForeignKeyConstraint(columns=[block_device_mapping.c.instance_uuid],
-+ refcolumns=[instances.c.uuid])
-+ fkey.drop()
-+
- bdm = Table('block_device_mapping', meta, autoload=True)
- for index in bdm.indexes:
- if index.name == INDEX_NAME:
- index.drop()
-
-+ # Recreate foreign key
-+ fkey.create()
-
- def downgrade(migrate_engine):
- # Unnecessary to re-add duplicate index when downgrading